synched with trunk at revision 36569
[blender-staging.git] / source / blender / gpu / GPU_extensions.h
index a7f43d3b0aee0021d8e04c1f55bde3804e54f29f..8bf923a567956263329348cc413c42e8d4cf0f59 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * $Id$
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
  * ***** END GPL LICENSE BLOCK *****
  */
 
+/** \file GPU_extensions.h
+ *  \ingroup gpu
+ */
+
 #ifndef GPU_EXTENSIONS_H
 #define GPU_EXTENSIONS_H
 
@@ -57,7 +61,7 @@ typedef struct GPUShader GPUShader;
 void GPU_extensions_disable(void);
 void GPU_extensions_init(void); /* call this before running any of the functions below */
 void GPU_extensions_exit(void);
-int GPU_print_error(char *str);
+int GPU_print_error(const char *str);
 
 int GPU_glsl_support(void);
 int GPU_non_power_of_two_support(void);
@@ -104,10 +108,10 @@ int GPU_type_matches(GPUDeviceType device, GPUOSType os, GPUDriverType driver);
        - if created with from_blender, will not free the texture
 */
 
-GPUTexture *GPU_texture_create_1D(int w, float *pixels);
-GPUTexture *GPU_texture_create_2D(int w, int h, float *pixels);
+GPUTexture *GPU_texture_create_1D(int w, float *pixels, char err_out[256]);
+GPUTexture *GPU_texture_create_2D(int w, int h, float *pixels, char err_out[256]);
 GPUTexture *GPU_texture_create_3D(int w, int h, int depth, float *fpixels);
-GPUTexture *GPU_texture_create_depth(int w, int h);
+GPUTexture *GPU_texture_create_depth(int w, int h, char err_out[256]);
 GPUTexture *GPU_texture_from_blender(struct Image *ima,
        struct ImageUser *iuser, double time, int mipmap);
 void GPU_texture_free(GPUTexture *tex);
@@ -130,19 +134,20 @@ int GPU_texture_opengl_height(GPUTexture *tex);
    - after any of the GPU_framebuffer_* functions, GPU_framebuffer_restore must
         be called before rendering to the window framebuffer again */
 
-GPUFrameBuffer *GPU_framebuffer_create();
-int GPU_framebuffer_texture_attach(GPUFrameBuffer *fb, GPUTexture *tex);
+GPUFrameBuffer *GPU_framebuffer_create(void);
+int GPU_framebuffer_texture_attach(GPUFrameBuffer *fb, GPUTexture *tex, char err_out[256]);
 void GPU_framebuffer_texture_detach(GPUFrameBuffer *fb, GPUTexture *tex);
 void GPU_framebuffer_texture_bind(GPUFrameBuffer *fb, GPUTexture *tex);
 void GPU_framebuffer_texture_unbind(GPUFrameBuffer *fb, GPUTexture *tex);
 void GPU_framebuffer_free(GPUFrameBuffer *fb);
 
-void GPU_framebuffer_restore();
+void GPU_framebuffer_restore(void);
 
 /* GPU OffScreen
-   - wrapper around framebuffer and texture for simple offscreen drawing */
+   - wrapper around framebuffer and texture for simple offscreen drawing 
+   - changes size if graphics card can't support it */
 
-GPUOffScreen *GPU_offscreen_create(int width, int height);
+GPUOffScreen *GPU_offscreen_create(int *width, int *height, char err_out[256]);
 void GPU_offscreen_free(GPUOffScreen *ofs);
 void GPU_offscreen_bind(GPUOffScreen *ofs);
 void GPU_offscreen_unbind(GPUOffScreen *ofs);
@@ -156,9 +161,9 @@ GPUShader *GPU_shader_create(const char *vertexcode, const char *fragcode, const
 void GPU_shader_free(GPUShader *shader);
 
 void GPU_shader_bind(GPUShader *shader);
-void GPU_shader_unbind();
+void GPU_shader_unbind(GPUShader *shader);
 
-int GPU_shader_get_uniform(GPUShader *shader, char *name);
+int GPU_shader_get_uniform(GPUShader *shader, const char *name);
 void GPU_shader_uniform_vector(GPUShader *shader, int location, int length,
        int arraysize, float *value);
 void GPU_shader_uniform_texture(GPUShader *shader, int location, GPUTexture *tex);