mutter/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt

858 lines
18 KiB
Plaintext
Raw Normal View History

<SECTION>
<FILE>cogl-object</FILE>
<TITLE>The Object Interface</TITLE>
CoglObject
cogl_object_ref
cogl_object_unref
CoglUserDataKey
cogl_object_get_user_data
cogl_object_set_user_data
</SECTION>
Adds CoglError api Although we use GLib internally in Cogl we would rather not leak GLib api through Cogl's own api, except through explicitly namespaced cogl_glib_ / cogl_gtype_ feature apis. One of the benefits we see to not leaking GLib through Cogl's public API is that documentation for Cogl won't need to first introduce the Glib API to newcomers, thus hopefully lowering the barrier to learning Cogl. This patch provides a Cogl specific typedef for reporting runtime errors which by no coincidence matches the typedef for GError exactly. If Cogl is built with --enable-glib (default) then developers can even safely assume that a CoglError is a GError under the hood. This patch also enforces a consistent policy for when NULL is passed as an error argument and an error is thrown. In this case we log the error and abort the application, instead of silently ignoring it. In common cases where nothing has been implemented to handle a particular error and/or where applications are just printing the error and aborting themselves then this saves some typing. This also seems more consistent with language based exceptions which usually cause a program to abort if they are not explicitly caught (which passing a non-NULL error signifies in this case) Since this policy for NULL error pointers is stricter than the standard GError convention, there is a clear note in the documentation to warn developers that are used to using the GError api. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit b068d5ea09ab32c37e8c965fc8582c85d1b2db46) Note: Since we can't change the Cogl 1.x api the patch was changed to not rename _error_quark() functions to be _error_domain() functions and although it's a bit ugly, instead of providing our own CoglError type that's compatible with GError we simply #define CoglError to GError unless Cogl is built with glib disabled. Note: this patch does technically introduce an API break since it drops the cogl_error_get_type() symbol generated by glib-mkenum (Since the CoglError enum was replaced by a CoglSystemError enum) but for now we are assuming that this will not affect anyone currently using the Cogl API. If this does turn out to be a problem in practice then we would be able to fix this my manually copying an implementation of cogl_error_get_type() generated by glib-mkenum into a compatibility source file and we could also define the original COGL_ERROR_ enums for compatibility too. Note: another minor concern with cherry-picking this patch to the 1.14 branch is that an api scanner would be lead to believe that some APIs have changed, and for example the gobject-introspection parser which understands the semantics of GError will not understand the semantics of CoglError. We expect most people that have tried to use gobject-introspection with Cogl already understand though that it is not well suited to generating bindings of the Cogl api anyway and we aren't aware or anyone depending on such bindings for apis involving GErrors. (GnomeShell only makes very-very minimal use of Cogl via the gjs bindings for the cogl_rectangle and cogl_color apis.) The main reason we have cherry-picked this patch to the 1.14 branch even given the above concerns is that without it it would become very awkward for us to cherry-pick other beneficial patches from master.
2012-08-31 18:28:27 +00:00
<SECTION>
<FILE>cogl-error</FILE>
<TITLE>Exception handling</TITLE>
CoglError
cogl_error_matches
cogl_error_free
cogl_error_copy
COGL_GLIB_ERROR
</SECTION>
<SECTION>
<FILE>cogl-renderer</FILE>
<TITLE>CoglRenderer: Connect to a backend renderer</TITLE>
cogl_renderer_new
cogl_renderer_get_n_fragment_texture_units
cogl_renderer_connect
<SUBSECTION>
cogl_xlib_renderer_set_foreign_display
cogl_xlib_renderer_get_foreign_display
<SUBSECTION>
CoglXlibFilterFunc
cogl_xlib_renderer_add_native_filter
cogl_xlib_renderer_remove_native_filter
cogl_xlib_renderer_handle_native_event
<SUBSECTION>
CoglWin32FilterFunc
cogl_win32_renderer_add_native_filter
cogl_win32_renderer_remove_native_filter
cogl_win32_renderer_handle_native_event
<SUBSECTION>
cogl_wayland_renderer_set_foreign_display
cogl_wayland_renderer_get_display
cogl_wayland_renderer_set_foreign_compositor
cogl_wayland_renderer_get_compositor
</SECTION>
<SECTION>
<FILE>cogl-swap-chain</FILE>
<TITLE>CoglSwapChain: Describe a set of back buffers for flipping between</TITLE>
cogl_swap_chain_new
cogl_swap_chain_set_has_alpha
cogl_swap_chain_set_length
</SECTION>
<SECTION>
<FILE>cogl-onscreen-template</FILE>
<TITLE>CoglOnscreenTemplate: Describe a template for onscreen framebuffers</TITLE>
cogl_onscreen_template_new
</SECTION>
<SECTION>
<FILE>cogl-display</FILE>
<TITLE>CoglDisplay: Setup a display pipeline</TITLE>
cogl_display_new
cogl_display_get_renderer
cogl_display_setup
<SUBSECTION>
cogl_gdl_display_set_plane
<SUBSECTION>
cogl_wayland_display_set_compositor_display
</SECTION>
<SECTION>
<FILE>cogl-context</FILE>
<TITLE>The Top-Level Context</TITLE>
<SUBSECTION>
cogl_context_new
cogl_is_context
cogl_context_get_display
<SUBSECTION>
CoglFeatureID
cogl_has_feature
cogl_has_features
CoglFeatureCallback
cogl_foreach_feature
<SUBSECTION>
cogl_push_matrix
cogl_pop_matrix
cogl_scale
cogl_translate
cogl_rotate
cogl_transform
cogl_frustum
cogl_perspective
cogl_ortho
<SUBSECTION>
cogl_get_modelview_matrix
cogl_set_modelview_matrix
cogl_get_projection_matrix
cogl_set_projection_matrix
cogl_set_viewport
cogl_get_viewport
<SUBSECTION>
cogl_set_source
cogl_set_source_color
cogl_set_source_color4ub
cogl_set_source_color4f
cogl_set_source_texture
cogl_get_source
cogl_push_source
cogl_pop_source
<SUBSECTION>
COGL_TYPE_BUFFER_BIT
cogl_clear
<SUBSECTION>
CoglReadPixelsFlags
cogl_read_pixels
<SUBSECTION>
cogl_flush
<SUBSECTION Standard>
COGL_TYPE_ATTRIBUTE_TYPE
COGL_TYPE_BLEND_STRING_ERROR
COGL_TYPE_BUFFER_ACCESS
COGL_TYPE_BUFFER_TARGET
COGL_TYPE_BUFFER_UPDATE_HINT
COGL_TYPE_BUFFER_USAGE_HINT
COGL_TYPE_DEBUG_FLAGS
COGL_TYPE_DRIVER_ERROR
COGL_TYPE_FEATURE_FLAGS
COGL_TYPE_INDICES_TYPE
COGL_TYPE_PIXEL_FORMAT
COGL_TYPE_READ_PIXELS_FLAGS
COGL_TYPE_TEXTURE_FLAGS
COGL_TYPE_VERTICES_MODE
<SUBSECTION Private>
COGL_DRIVER_ERROR
CoglDriverError
cogl_attribute_type_get_type
cogl_buffer_bit_get_type
cogl_buffer_target_get_type
cogl_debug_flags_get_type
cogl_driver_error_get_type
cogl_feature_flags_get_type
cogl_fixed_get_type
cogl_fog_mode_get_type
cogl_indices_type_get_type
cogl_pixel_format_get_type
cogl_read_pixels_flags_get_type
cogl_shader_type_get_type
cogl_texture_flags_get_type
cogl_vertices_mode_get_type
COGL_AFIRST_BIT
COGL_A_BIT
COGL_BGR_BIT
COGL_PREMULT_BIT
</SECTION>
<SECTION>
<FILE>cogl-poll</FILE>
<TITLE>Main loop integeration</TITLE>
CoglPollFDEvent
CoglPollFD
cogl_poll_get_info
cogl_poll_dispatch
cogl_glib_source_new
</SECTION>
<SECTION>
<FILE>cogl-index-array</FILE>
<TITLE>Index Arrays</TITLE>
cogl_index_array_new
cogl_is_index_array
</SECTION>
<SECTION>
<FILE>cogl-attribute</FILE>
<TITLE>Vertex Attributes</TITLE>
cogl_attribute_new
cogl_is_attribute
cogl_attribute_set_normalized
cogl_attribute_get_normalized
cogl_attribute_get_buffer
cogl_attribute_set_buffer
</SECTION>
<SECTION>
<FILE>cogl-indices</FILE>
<TITLE>Indices</TITLE>
cogl_indices_new
cogl_is_indices
</SECTION>
<SECTION>
<FILE>cogl-primitive</FILE>
<TITLE>Primitives</TITLE>
CoglPrimitive
cogl_primitive_new
cogl_primitive_new_with_attributes
cogl_primitive_new_p2
cogl_primitive_new_p3
cogl_primitive_new_p2c4
cogl_primitive_new_p3c4
cogl_primitive_new_p2t2
cogl_primitive_new_p3t2
cogl_primitive_new_p2t2c4
cogl_primitive_new_p3t2c4
cogl_is_primitive
cogl_primitive_get_first_vertex
cogl_primitive_set_first_vertex
cogl_primitive_get_n_vertices
cogl_primitive_set_n_vertices
cogl_primitive_get_mode
cogl_primitive_set_mode
cogl_primitive_set_attributes
cogl_primitive_get_indices
cogl_primitive_set_indices
cogl_primitive_copy
CoglPrimitiveAttributeCallback
cogl_primitive_foreach_attribute
</SECTION>
<SECTION>
<FILE>cogl-rectangle</FILE>
<TITLE>Rectangles</TITLE>
cogl_rectangle
cogl_rectangles
cogl_rectangle_with_texture_coords
cogl_rectangles_with_texture_coords
cogl_rectangle_with_multitexture_coords
</SECTION>
<SECTION>
<FILE>cogl-snippet</FILE>
<TITLE>Shader snippets</TITLE>
CoglSnippet
CoglSnippetHook
cogl_snippet_new
cogl_snippet_get_hook
cogl_is_snippet
cogl_snippet_set_declarations
cogl_snippet_get_declarations
cogl_snippet_set_pre
cogl_snippet_get_pre
cogl_snippet_set_replace
cogl_snippet_get_replace
cogl_snippet_set_post
cogl_snippet_get_post
</SECTION>
<SECTION>
<FILE>cogl-primitives-deprecated</FILE>
<TITLE>Primitives (Deprecated)</TITLE>
cogl_polygon
</SECTION>
<SECTION>
<FILE>cogl-paths</FILE>
<TITLE>Path Primitives</TITLE>
cogl_is_path
cogl_path_new
cogl_path_copy
cogl_path_move_to
cogl_path_close
cogl_path_line_to
cogl_path_curve_to
cogl_path_arc
cogl_path_rel_move_to
cogl_path_rel_line_to
cogl_path_rel_curve_to
cogl_path_line
cogl_path_polyline
cogl_path_polygon
cogl_path_rectangle
cogl_path_round_rectangle
cogl_path_ellipse
<SUBSECTION>
CoglPathFillRule
cogl_path_set_fill_rule
cogl_path_get_fill_rule
</SECTION>
<SECTION>
<FILE>cogl-texture</FILE>
<TITLE>The Texture Interface</TITLE>
CoglTexture
cogl_is_texture
<SUBSECTION>
cogl_texture_get_width
cogl_texture_get_height
cogl_texture_get_format
cogl_texture_is_sliced
cogl_texture_get_data
cogl_texture_set_region
CoglTextureType
<SUBSECTION Private>
COGL_TEXTURE_MAX_WASTE
</SECTION>
<SECTION>
<FILE>cogl-texture-2d</FILE>
<TITLE>2D textures</TITLE>
CoglTexture2D
cogl_texture_2d_new_with_size
cogl_texture_2d_new_from_bitmap
cogl_texture_2d_new_from_data
cogl_texture_2d_new_from_foreign
cogl_is_texture_rectangle
</SECTION>
<SECTION>
<FILE>cogl-texture-rectangle</FILE>
<TITLE>Rectangle textures (non-normalized coordinates)</TITLE>
CoglTextureRectangle
cogl_texture_rectangle_new_with_size
cogl_texture_rectangle_new_from_bitmap
cogl_is_texture_rectangle
</SECTION>
<SECTION>
<FILE>cogl-texture-3d</FILE>
<TITLE>3D textures</TITLE>
CoglTexture3D
cogl_texture_3d_new_with_size
cogl_texture_3d_new_from_bitmap
cogl_texture_3d_new_from_data
cogl_is_texture_3d
</SECTION>
<SECTION>
<FILE>cogl-meta-texture</FILE>
<TITLE>High Level Meta Textures</TITLE>
CoglMetaTexture
CoglMetaTextureCallback
cogl_meta_texture_foreach_in_region
</SECTION>
<SECTION>
<FILE>cogl-primitive-texture</FILE>
<TITLE>Low-level primitive textures</TITLE>
CoglPrimitiveTexture
cogl_is_primitive_texture
cogl_primitive_texture_set_auto_mipmap
</SECTION>
<SECTION>
<FILE>cogl-sub-texture</FILE>
<TITLE>Sub Textures</TITLE>
CoglSubTexture
cogl_sub_texture_new
cogl_is_sub_texture
</SECTION>
<SECTION>
<FILE>cogl-texture-2d-sliced</FILE>
<TITLE>Sliced Textures</TITLE>
CoglTexture2DSliced
cogl_texture_2d_sliced_new_with_size
cogl_is_texture_2d_sliced
</SECTION>
<SECTION>
<FILE>cogl-texture-pixmap-x11</FILE>
<TITLE>X11 Texture From Pixmap</TITLE>
cogl_texture_pixmap_x11_new
cogl_texture_pixmap_x11_update_area
cogl_texture_pixmap_x11_is_using_tfp_extension
cogl_texture_pixmap_x11_set_damage_object
cogl_is_texture_pixmap_x11
</SECTION>
<SECTION>
<FILE>cogl-framebuffer</FILE>
<TITLE>CoglFramebuffer: The Framebuffer Interface</TITLE>
CoglFramebuffer
COGL_FRAMEBUFFER
cogl_framebuffer_allocate
cogl_framebuffer_get_width
cogl_framebuffer_get_height
cogl_framebuffer_set_viewport
cogl_framebuffer_get_viewport_x
cogl_framebuffer_get_viewport_y
cogl_framebuffer_get_viewport_width
cogl_framebuffer_get_viewport_height
cogl_framebuffer_get_viewport4fv
cogl_framebuffer_get_color_format
cogl_framebuffer_get_red_bits
cogl_framebuffer_get_green_bits
cogl_framebuffer_get_blue_bits
cogl_framebuffer_get_blue_bits
cogl_framebuffer_get_color_mask
cogl_framebuffer_set_color_mask
cogl_framebuffer_get_samples_per_pixel
cogl_framebuffer_set_samples_per_pixel
cogl_framebuffer_resolve_samples
cogl_framebuffer_resolve_samples_region
cogl_framebuffer_get_context
cogl_framebuffer_clear
cogl_framebuffer_clear4f
cogl_framebuffer_read_pixels_into_bitmap
cogl_framebuffer_read_pixels
cogl_framebuffer_set_dither_enabled
cogl_framebuffer_get_dither_enabled
<SUBSECTION>
cogl_framebuffer_draw_primitive
cogl_framebuffer_draw_attributes
cogl_framebuffer_vdraw_attributes
cogl_framebuffer_draw_indexed_attributes
cogl_framebuffer_vdraw_indexed_attributes
cogl_framebuffer_draw_rectangle
cogl_framebuffer_draw_textured_rectangle
cogl_framebuffer_draw_multitextured_rectangle
cogl_framebuffer_draw_rectangles
cogl_framebuffer_draw_textured_rectangles
cogl_framebuffer_stroke_path
cogl_framebuffer_fill_path
<SUBSECTION>
cogl_framebuffer_swap_buffers
cogl_framebuffer_swap_region
cogl_framebuffer_add_swap_buffers_callback
cogl_framebuffer_remove_swap_buffers_callback
cogl_framebuffer_finish
<SUBSECTION>
cogl_framebuffer_push_matrix
cogl_framebuffer_pop_matrix
cogl_framebuffer_identity_matrix
cogl_framebuffer_scale
cogl_framebuffer_translate
cogl_framebuffer_rotate
cogl_framebuffer_rotate_euler
cogl_framebuffer_rotate_quaternion
cogl_framebuffer_transform
cogl_framebuffer_get_modelview_matrix
cogl_framebuffer_set_modelview_matrix
<SUBSECTION>
cogl_framebuffer_perspective
cogl_framebuffer_frustum
cogl_framebuffer_orthographic
cogl_framebuffer_get_projection_matrix
cogl_framebuffer_set_projection_matrix
<SUBSECTION>
cogl_framebuffer_push_scissor_clip
cogl_framebuffer_push_rectangle_clip
cogl_framebuffer_push_primitive_clip
cogl_framebuffer_pop_clip
<SUBSECTION>
cogl_get_draw_framebuffer
cogl_set_framebuffer
cogl_push_framebuffer
cogl_pop_framebuffer
</SECTION>
<SECTION>
<FILE>cogl-onscreen</FILE>
<TITLE>CoglOnscreen: The Onscreen Framebuffer Interface</TITLE>
CoglOnscreen
COGL_ONSCREEN
cogl_onscreen_new
cogl_x11_onscreen_set_foreign_window_xid
cogl_x11_onscreen_get_window_xid
cogl_x11_onscreen_get_visual_xid
cogl_win32_onscreen_set_foreign_window
cogl_win32_onscreen_get_window
cogl_onscreen_set_swap_throttled
cogl_onscreen_show
cogl_onscreen_hide
</SECTION>
<SECTION>
<FILE>cogl-offscreen</FILE>
<TITLE>Offscreen Framebuffers</TITLE>
cogl_offscreen_new_to_texture
cogl_is_offscreen
</SECTION>
<SECTION>
<FILE>cogl-color</FILE>
<TITLE>Color Type</TITLE>
CoglColor
cogl_color_new
cogl_color_copy
cogl_color_free
cogl_color_set_from_4ub
cogl_color_set_from_4f
<SUBSECTION>
cogl_color_get_red
cogl_color_get_green
cogl_color_get_blue
cogl_color_get_alpha
<SUBSECTION>
cogl_color_get_red_byte
cogl_color_get_green_byte
cogl_color_get_blue_byte
cogl_color_get_alpha_byte
<SUBSECTION>
cogl_color_get_red_float
cogl_color_get_green_float
cogl_color_get_blue_float
cogl_color_get_alpha_float
<SUBSECTION>
cogl_color_set_red
cogl_color_set_green
cogl_color_set_blue
cogl_color_set_alpha
<SUBSECTION>
cogl_color_set_red_byte
cogl_color_set_green_byte
cogl_color_set_blue_byte
cogl_color_set_alpha_byte
<SUBSECTION>
cogl_color_set_red_float
cogl_color_set_green_float
cogl_color_set_blue_float
cogl_color_set_alpha_float
<SUBSECTION>
cogl_color_premultiply
cogl_color_unpremultiply
cogl_color_equal
</SECTION>
<SECTION>
<FILE>cogl-matrix</FILE>
<TITLE>Matrices</TITLE>
CoglMatrix
cogl_matrix_init_identity
cogl_matrix_init_from_array
cogl_matrix_init_translation
cogl_matrix_init_from_quaternion
cogl_matrix_init_from_euler
cogl_matrix_copy
cogl_matrix_equal
cogl_matrix_free
cogl_matrix_frustum
cogl_matrix_orthographic
cogl_matrix_perspective
cogl_matrix_look_at
cogl_matrix_multiply
cogl_matrix_rotate
cogl_matrix_rotate_quaternion
cogl_matrix_rotate_euler
cogl_matrix_translate
cogl_matrix_scale
cogl_matrix_transpose
cogl_matrix_get_array
cogl_matrix_get_inverse
cogl_matrix_transform_point
cogl_matrix_transform_points
cogl_matrix_project_points
cogl_matrix_is_identity
</SECTION>
<SECTION>
<FILE>cogl-matrix-stack</FILE>
<TITLE>Matrix Stacks</TITLE>
CoglMatrixStack
CoglMatrixEntry
cogl_matrix_stack_new
cogl_matrix_stack_push
cogl_matrix_stack_pop
cogl_matrix_stack_load_identity
cogl_matrix_stack_scale
cogl_matrix_stack_translate
cogl_matrix_stack_rotate
cogl_matrix_stack_rotate_quaternion
cogl_matrix_stack_rotate_euler
cogl_matrix_stack_multiply
cogl_matrix_stack_frustum
cogl_matrix_stack_perspective
cogl_matrix_stack_orthographic
cogl_matrix_stack_get_inverse
cogl_matrix_stack_get_entry
cogl_matrix_stack_get
cogl_matrix_entry_get
cogl_matrix_stack_set
cogl_matrix_entry_calculate_translation
cogl_matrix_entry_is_identity
cogl_matrix_entry_equal
cogl_matrix_entry_ref
cogl_matrix_entry_unref
</SECTION>
<SECTION>
<FILE>cogl-euler</FILE>
<TITLE>Eulers (Rotations)</TITLE>
CoglEuler
cogl_euler_init
cogl_euler_init_from_matrix
cogl_euler_init_from_quaternion
cogl_euler_equal
cogl_euler_copy
cogl_euler_free
</SECTION>
<SECTION>
<FILE>cogl-quaternion</FILE>
<TITLE>Quaternions (Rotations)</TITLE>
CoglQuaternion
cogl_quaternion_init_identity
cogl_quaternion_init
cogl_quaternion_init_from_quaternion
cogl_quaternion_init_from_angle_vector
cogl_quaternion_init_from_array
cogl_quaternion_init_from_x_rotation
cogl_quaternion_init_from_y_rotation
cogl_quaternion_init_from_z_rotation
cogl_quaternion_init_from_euler
cogl_quaternion_equal
cogl_quaternion_copy
cogl_quaternion_free
cogl_quaternion_get_rotation_angle
cogl_quaternion_get_rotation_axis
cogl_quaternion_normalize
cogl_quaternion_dot_product
cogl_quaternion_invert
cogl_quaternion_multiply
cogl_quaternion_pow
cogl_quaternion_slerp
cogl_quaternion_nlerp
cogl_quaternion_squad
cogl_get_static_identity_quaternion
cogl_get_static_zero_quaternion
</SECTION>
<SECTION>
<FILE>cogl-pipeline</FILE>
<TITLE>Pipeline</TITLE>
cogl_pipeline_new
cogl_pipeline_copy
cogl_is_pipeline
cogl_pipeline_set_color
cogl_pipeline_set_color4ub
cogl_pipeline_set_color4f
cogl_pipeline_get_color
cogl_pipeline_set_ambient
cogl_pipeline_get_ambient
cogl_pipeline_set_diffuse
cogl_pipeline_get_diffuse
cogl_pipeline_set_ambient_and_diffuse
cogl_pipeline_set_emission
cogl_pipeline_get_emission
cogl_pipeline_set_specular
cogl_pipeline_get_specular
cogl_pipeline_set_shininess
cogl_pipeline_get_shininess
CoglMaterialAlphaFunc
cogl_pipeline_set_alpha_test_function
COGL_BLEND_STRING_ERROR
CoglBlendStringError
cogl_pipeline_set_blend
cogl_pipeline_set_blend_constant
cogl_pipeline_set_point_size
cogl_pipeline_get_point_size
cogl_pipeline_get_color_mask
cogl_pipeline_set_color_mask
CoglPipelineCullFaceMode
cogl_pipeline_set_cull_face_mode
CoglWinding
cogl_pipeline_set_front_face_winding
cogl_pipeline_set_layer_texture
cogl_pipeline_set_layer_null_texture
cogl_pipeline_get_layer_texture
CoglMaterialFilter
cogl_pipeline_set_layer_filters
cogl_pipeline_get_layer_min_filter
cogl_pipeline_get_layer_mag_filter
CoglMaterialWrapMode
cogl_pipeline_set_layer_wrap_mode
cogl_pipeline_set_layer_wrap_mode_s
cogl_pipeline_set_layer_wrap_mode_t
cogl_pipeline_set_layer_wrap_mode_p
cogl_pipeline_set_layer_combine
cogl_pipeline_set_layer_combine_constant
cogl_pipeline_set_layer_matrix
cogl_pipeline_set_layer_point_sprite_coords_enabled
cogl_pipeline_get_layer_point_sprite_coords_enabled
cogl_pipeline_remove_layer
cogl_pipeline_get_n_layers
cogl_pipeline_foreach_layer
cogl-pipeline: Add support for setting uniform values This adds the following new public experimental functions to set uniform values on a CoglPipeline: void cogl_pipeline_set_uniform_1f (CoglPipeline *pipeline, int uniform_location, float value); void cogl_pipeline_set_uniform_1i (CoglPipeline *pipeline, int uniform_location, int value); void cogl_pipeline_set_uniform_float (CoglPipeline *pipeline, int uniform_location, int n_components, int count, const float *value); void cogl_pipeline_set_uniform_int (CoglPipeline *pipeline, int uniform_location, int n_components, int count, const int *value); void cogl_pipeline_set_uniform_matrix (CoglPipeline *pipeline, int uniform_location, int dimensions, int count, gboolean transpose, const float *value); These are similar to the old functions used to set uniforms on a CoglProgram. To get a value to pass in as the uniform_location there is also: int cogl_pipeline_get_uniform_location (CoglPipeline *pipeline, const char *uniform_name); Conceptually the uniform locations are tied to the pipeline so that whenever setting a value for a new pipeline the application is expected to call this function. However in practice the uniform locations are global to the CoglContext. The names are stored in a linked list where the position in the list is the uniform location. The global indices are used so that each pipeline can store a mask of which uniforms it overrides. That way it is quicker to detect which uniforms are different from the last pipeline that used the same CoglProgramState so it can avoid flushing uniforms that haven't changed. Currently the values are not actually compared which means that it will only avoid flushing a uniform if there is a common ancestor that sets the value (or if the same pipeline is being flushed again - in which case the pipeline and its common ancestor are the same thing). The uniform values are stored in the big state of the pipeline as a sparse linked list. A bitmask stores which values have been overridden and only overridden values are stored in the linked list. Reviewed-by: Robert Bragg <robert@linux.intel.com>
2011-11-03 17:20:43 +00:00
cogl_pipeline_get_uniform_location
cogl_pipeline_set_uniform_1f
cogl_pipeline_set_uniform_1i
cogl_pipeline_set_uniform_float
cogl_pipeline_set_uniform_int
cogl_pipeline_set_uniform_matrix
cogl_pipeline_add_snippet
cogl_pipeline_add_layer_snippet
<SUBSECTION Private>
cogl_blend_string_error_get_type
Adds CoglError api Although we use GLib internally in Cogl we would rather not leak GLib api through Cogl's own api, except through explicitly namespaced cogl_glib_ / cogl_gtype_ feature apis. One of the benefits we see to not leaking GLib through Cogl's public API is that documentation for Cogl won't need to first introduce the Glib API to newcomers, thus hopefully lowering the barrier to learning Cogl. This patch provides a Cogl specific typedef for reporting runtime errors which by no coincidence matches the typedef for GError exactly. If Cogl is built with --enable-glib (default) then developers can even safely assume that a CoglError is a GError under the hood. This patch also enforces a consistent policy for when NULL is passed as an error argument and an error is thrown. In this case we log the error and abort the application, instead of silently ignoring it. In common cases where nothing has been implemented to handle a particular error and/or where applications are just printing the error and aborting themselves then this saves some typing. This also seems more consistent with language based exceptions which usually cause a program to abort if they are not explicitly caught (which passing a non-NULL error signifies in this case) Since this policy for NULL error pointers is stricter than the standard GError convention, there is a clear note in the documentation to warn developers that are used to using the GError api. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit b068d5ea09ab32c37e8c965fc8582c85d1b2db46) Note: Since we can't change the Cogl 1.x api the patch was changed to not rename _error_quark() functions to be _error_domain() functions and although it's a bit ugly, instead of providing our own CoglError type that's compatible with GError we simply #define CoglError to GError unless Cogl is built with glib disabled. Note: this patch does technically introduce an API break since it drops the cogl_error_get_type() symbol generated by glib-mkenum (Since the CoglError enum was replaced by a CoglSystemError enum) but for now we are assuming that this will not affect anyone currently using the Cogl API. If this does turn out to be a problem in practice then we would be able to fix this my manually copying an implementation of cogl_error_get_type() generated by glib-mkenum into a compatibility source file and we could also define the original COGL_ERROR_ enums for compatibility too. Note: another minor concern with cherry-picking this patch to the 1.14 branch is that an api scanner would be lead to believe that some APIs have changed, and for example the gobject-introspection parser which understands the semantics of GError will not understand the semantics of CoglError. We expect most people that have tried to use gobject-introspection with Cogl already understand though that it is not well suited to generating bindings of the Cogl api anyway and we aren't aware or anyone depending on such bindings for apis involving GErrors. (GnomeShell only makes very-very minimal use of Cogl via the gjs bindings for the cogl_rectangle and cogl_color apis.) The main reason we have cherry-picked this patch to the 1.14 branch even given the above concerns is that without it it would become very awkward for us to cherry-pick other beneficial patches from master.
2012-08-31 18:28:27 +00:00
cogl_blend_string_error_domain
</SECTION>
<SECTION>
<FILE>cogl-depth-state</FILE>
CoglDepthState
cogl_depth_state_init
cogl_depth_state_set_test_enabled
cogl_depth_state_get_test_enabled
cogl_depth_state_set_test_function
cogl_depth_state_get_test_function
cogl_depth_state_set_writing_enabled
cogl_depth_state_get_writing_enabled
cogl_depth_state_set_range
cogl_depth_state_get_range
</SECTION>
<SECTION>
<FILE>cogl-buffer</FILE>
<TITLE>CoglBuffer: The Buffer Interface</TITLE>
cogl_is_buffer
cogl_buffer_get_size
CoglBufferUsageHint
cogl_buffer_set_usage_hint
cogl_buffer_get_usage_hint
CoglBufferUpdateHint
cogl_buffer_set_update_hint
cogl_buffer_get_update_hint
CoglBufferAccess
cogl_buffer_map
cogl_buffer_map_range
cogl_buffer_unmap
cogl_buffer_set_data
<SUBSECTION>
cogl_pixel_buffer_new
cogl_is_pixel_buffer
<SUBSECTION Private>
cogl_buffer_access_get_type
cogl_buffer_update_hint_get_type
cogl_buffer_usage_hint_get_type
</SECTION>
<SECTION>
<FILE>cogl-attribute-buffer</FILE>
<TITLE>CoglAttributeBuffer: Buffers of vertex attributes</TITLE>
CoglAttributeBuffer
Allow propogation of OOM errors to apps This allows apps to catch out-of-memory errors when allocating textures. Textures can be pretty huge at times and so it's quite possible for an application to try and allocate more memory than is available. It's also very possible that the application can take some action in response to reduce memory pressure (such as freeing up texture caches perhaps) so we shouldn't just automatically abort like we do for trivial heap allocations. These public functions now take a CoglError argument so applications can catch out of memory errors: cogl_buffer_map cogl_buffer_map_range cogl_buffer_set_data cogl_framebuffer_read_pixels_into_bitmap cogl_pixel_buffer_new cogl_texture_new_from_data cogl_texture_new_from_bitmap Note: we've been quite conservative with how many apis we let throw OOM CoglErrors since we don't really want to put a burdon on developers to be checking for errors with every cogl api call. So long as there is some lower level api for apps to use that let them catch OOM errors for everything necessary that's enough and we don't have to make more convenient apis more awkward to use. The main focus is on bitmaps and texture allocations since they can be particularly large and prone to failing. A new cogl_attribute_buffer_new_with_size() function has been added in case developers need to catch OOM errors when allocating attribute buffers whereby they can first use _buffer_new_with_size() (which doesn't take a CoglError) followed by cogl_buffer_set_data() which will lazily allocate the buffer storage and report OOM errors. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit f7735e141ad537a253b02afa2a8238f96340b978) Note: since we can't break the API for Cogl 1.x then actually the main purpose of cherry picking this patch is to keep in-line with changes on the master branch so that we can easily cherry-pick patches. All the api changes relating stable apis released on the 1.12 branch have been reverted as part of cherry-picking this patch so this most just applies all the internal plumbing changes that enable us to correctly propagate OOM errors.
2012-11-08 17:54:10 +00:00
cogl_attribute_buffer_new_with_size
cogl_attribute_buffer_new
cogl_is_attribute_buffer
</SECTION>
<SECTION>
<FILE>cogl-index-buffer</FILE>
<TITLE>CoglIndexBuffer: Buffers of vertex indices</TITLE>
CoglIndexBuffer
cogl_index_buffer_new
cogl_is_index_buffer
</SECTION>
<SECTION>
<FILE>cogl-vector</FILE>
<TITLE>3 Component Vectors</TITLE>
cogl_vector3_init
cogl_vector3_init_zero
cogl_vector3_equal
cogl_vector3_equal_with_epsilon
cogl_vector3_copy
cogl_vector3_free
cogl_vector3_invert
cogl_vector3_add
cogl_vector3_subtract
cogl_vector3_multiply_scalar
cogl_vector3_divide_scalar
cogl_vector3_normalize
cogl_vector3_magnitude
cogl_vector3_cross_product
cogl_vector3_dot_product
cogl_vector3_distance
</SECTION>
<SECTION>
<FILE>cogl-version</FILE>
<TITLE>Versioning utility macros</TITLE>
COGL_VERSION_MAJOR
COGL_VERSION_MINOR
COGL_VERSION_MICRO
COGL_VERSION_STRING
COGL_VERSION
COGL_VERSION_ENCODE
COGL_VERSION_CHECK
COGL_VERSION_GET_MAJOR
COGL_VERSION_GET_MINOR
COGL_VERSION_GET_MICRO
</SECTION>
<SECTION>
<FILE>cogl-types</FILE>
<TITLE>Common Types</TITLE>
CoglFuncPtr
CoglPixelFormat
CoglBufferTarget
CoglBufferBit
CoglAttributeType
CoglColorMask
</SECTION>
<SECTION>
<FILE>cogl-gtype</FILE>
<TITLE>GType Integration API</TITLE>
cogl_gtype_matrix_get_type
</SECTION>
<SECTION>
<FILE>cogl-sdl</FILE>
<TITLE>SDL Integration</TITLE>
cogl_sdl_context_new
cogl_sdl_renderer_set_event_type
cogl_sdl_renderer_get_event_type
cogl_sdl_handle_event
cogl_sdl_idle
cogl_sdl_onscreen_get_window
</SECTION>