185630085c
This option to GCC makes it give a warning whenever a global function is defined without a declaration. This should catch cases were we've defined a function but forgot to put it in a header. In that case it is either only used within one file so we should make it static or we should declare it in a header. The following changes where made to fix problems: • Some functions were made static • cogl-path.h (the one containing the 1.0 API) was split into two files, one defining the functions and one defining the enums so that cogl-path.c can include the enum and function declarations from the 2.0 API as well as the function declarations from the 1.0 API. • cogl2-clip-state has been removed. This only had one experimental function called cogl_clip_push_from_path but as this is unstable we might as well remove it favour of the equivalent cogl_framebuffer_* API. • The GLX, SDL and WGL winsys's now have a private header to define their get_vtable function instead of directly declaring in the C file where it is called. • All places that were calling COGL_OBJECT_DEFINE need to have the cogl_is_whatever function declared so these have been added either as a public function or in a private header. • Some files that were not including the header containing their function declarations have been fixed to do so. • Any unused error quark functions have been removed. If we later want them we should add them back one by one and add a declaration for them in a header. • _cogl_is_framebuffer has been renamed to cogl_is_framebuffer and made a public function with a declaration in cogl-framebuffer.h • Similarly for CoglOnscreen. • cogl_vdraw_indexed_attributes is called cogl_framebuffer_vdraw_indexed_attributes in the header. The definition has been changed to match the header. • cogl_index_buffer_allocate has been removed. This had no declaration and I'm not sure what it's supposed to do. • CoglJournal has been changed to use the internal CoglObject macro so that it won't define an exported cogl_is_journal symbol. • The _cogl_blah_pointer_from_handle functions have been removed. CoglHandle isn't used much anymore anyway and in the few places where it is used I think it's safe to just use the implicit cast from void* to the right type. • The test-utils.h header for the conformance tests explicitly disables the -Wmissing-declaration option using a pragma because all of the tests declare their main function without a header. Any mistakes relating to missing declarations aren't really important for the tests. • cogl_quaternion_init_from_quaternion and init_from_matrix have been given declarations in cogl-quaternion.h Reviewed-by: Robert Bragg <robert@linux.intel.com>
117 lines
4.5 KiB
C
117 lines
4.5 KiB
C
/*
|
|
* Cogl
|
|
*
|
|
* An object oriented GL/GLES Abstraction/Utility Layer
|
|
*
|
|
* Copyright (C) 2011 Intel Corporation.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <http://www.gnu.org/licenses/>.
|
|
*
|
|
*
|
|
* Authors:
|
|
* Robert Bragg <robert@linux.intel.com>
|
|
*/
|
|
|
|
#ifndef __COGL_TEXURE_2D_SLICED_H
|
|
#define __COGL_TEXURE_2D_SLICED_H
|
|
|
|
#include "cogl-context.h"
|
|
#include "cogl-types.h"
|
|
|
|
#include <glib.h>
|
|
|
|
/**
|
|
* SECTION:cogl-texture-2d-sliced
|
|
* @short_description: Functions for creating and manipulating 2D meta
|
|
* textures that may internally be comprised of
|
|
* multiple 2D textures with power-of-two sizes.
|
|
*
|
|
* These functions allow high-level meta textures (See the
|
|
* #CoglMetaTexture interface) to be allocated that may internally be
|
|
* comprised of multiple 2D texture "slices" with power-of-two sizes.
|
|
*
|
|
* This API can be useful when working with GPUs that don't have
|
|
* native support for non-power-of-two textures or if you want to load
|
|
* a texture that is larger than the GPUs maximum texture size limits.
|
|
*
|
|
* The algorithm for slicing works by first trying to map a virtual
|
|
* size to the next larger power-of-two size and then seeing how many
|
|
* wasted pixels that would result in. For example if you have a
|
|
* virtual texture that's 259 texels wide, the next pot size = 512 and
|
|
* the amount of waste would be 253 texels. If the amount of waste is
|
|
* above a max-waste threshold then we would next slice that texture
|
|
* into one that's 256 texels and then looking at how many more texels
|
|
* remain unallocated after that we choose the next power-of-two size.
|
|
* For the example of a 259 texel image that would mean having a 256
|
|
* texel wide texture, leaving 3 texels unallocated so we'd then
|
|
* create a 4 texel wide texture - now there is only one texel of
|
|
* waste. The algorithm continues to slice the right most textures
|
|
* until the amount of waste is less than or equal to a specfied
|
|
* max-waste threshold. The same logic for slicing from left to right
|
|
* is also applied from top to bottom.
|
|
*/
|
|
|
|
typedef struct _CoglTexture2DSliced CoglTexture2DSliced;
|
|
#define COGL_TEXTURE_2D_SLICED(X) ((CoglTexture2DSliced *)X)
|
|
|
|
/**
|
|
* cogl_texture_2d_sliced_new_with_size:
|
|
* @ctx: A #CoglContext
|
|
* @width: The virtual width of your sliced texture.
|
|
* @height: The virtual height of your sliced texture.
|
|
* @max_waste: The threshold of how wide a strip of wasted texels
|
|
* are allowed in the non-power-of-two textures before
|
|
* they must be sliced to reduce the amount of waste.
|
|
* @internal_format: The format of the texture
|
|
* @error: A #GError for exceptions.
|
|
*
|
|
* Creates a #CoglTexture2DSliced that may internally be comprised of
|
|
* 1 or more #CoglTexture2D textures with power-of-two sizes.
|
|
* @max_waste is used as a threshold for recursively slicing the
|
|
* right-most or bottom-most slices into smaller power-of-two sizes
|
|
* until the wasted padding at the bottom and right of the
|
|
* power-of-two textures is less than specified.
|
|
*
|
|
* Returns: A newly allocated #CoglTexture2DSliced or if there was
|
|
* an error allocating any of the internal slices %NULL is
|
|
* returned and @error is updated.
|
|
*
|
|
* Since: 1.10
|
|
* Stability: unstable
|
|
*/
|
|
CoglTexture2DSliced *
|
|
cogl_texture_2d_sliced_new_with_size (CoglContext *ctx,
|
|
unsigned int width,
|
|
unsigned int height,
|
|
int max_waste,
|
|
CoglPixelFormat internal_format,
|
|
GError **error);
|
|
|
|
/**
|
|
* cogl_is_texture_2d_sliced:
|
|
* @object: A #CoglObject pointer
|
|
*
|
|
* Gets whether the given object references a #CoglTexture2dSliced.
|
|
*
|
|
* Return value: %TRUE if the object references a #CoglTexture2dSliced
|
|
* and %FALSE otherwise.
|
|
* Since: 1.10
|
|
* Stability: unstable
|
|
*/
|
|
gboolean
|
|
cogl_is_texture_2d_sliced (void *object);
|
|
|
|
#endif /* __COGL_TEXURE_2D_SLICED_H */
|