Welcome to MorphOS-Storage, a webserver dedicated to MorphOS users. ©2016-2022 Meta-MorphOS.org
Description:First public MorphOS TinyGL update resulting from the TinyGL bounty at https://tinygl.molsen.co.za/
MorphOS TinyGL update 2022-08-05
This is the first public MorphOS TinyGL update resulting from the TinyGL bounty
at https://tinygl.molsen.co.za/.

The main changes in his update are:
- Support for OpenGL "ARB" programs.
- Support for cube maps (R200 only for now. R300/R400/R500 will have cube map
support added in the next update).
- Work has been done towards making TinyGL OpenGL 2.1 compliant.
- A much improved SDK, making it easier for developers to create and port
OpenGL applications on MorphOS.
- Many bugs in both TinyGL and the drivers have been fixed.

See later in this file for a more detailed list of changes.

Which Radeon family does my Radeon belong to?
Later in this readme there is information to help you identify which Radeon
family your graphics card belongs to. This update covers the R200, R300, R400
and R500 family of Radeon chips. Some features are currently only available
for some Radeon models. Find your graphics card in the list below to see if a
particular feature or example applies to your system.

This update contains two examples that have been used to test some of the new
functionality introduced in this TinyGL update.

The "Cube Map Skybox" example demonstrates the use of OpenGL cube maps to
render what's known as a skybox, a static background often used in games and
applications to give the appearance of a detailed background and sky with
minimal hardware processing requirements. In this update, this example only
works on Radeon graphics cards in the R200 family. Future updates will make
this example work on all supported Radeon graphics cards.

The "Bump2D" example demonstrates the use of fragment programs to create
effects not possible with the fixed function OpenGL pipeline. In this case it
creates a classic bump mapping effect, giving the illusion of detailed lighting
being applied to a surface. Parts of the surface - the metallic parts - also
have extra lighting applied to them, to give the illusion of them being shiny.
In this update, this exmaple only works on Radeon graphics cards in the R300
and R400 families. Future updates will make this example work on all supported
Radeon graphics cards.

The SDK directory contains updates to the MorphOS SDK and source code for the
examples included in this update. The SDK update has to be installed manually
by copying the contents of the SDK/GG directory to your SDK GG directory. You
can copy the files by executing the following commands from a shell, with the
current directory being the TinyGL update directory:

copy SDK/GG/#? gg: all quiet clone

Please note that there's no check to make sure that your SDK is not newer than
the files contained in this update. Only install the SDK files if your
currently installed SDK is older than this TinyGL update.

To build the examples, go to the SDK/Examples directory and run the following


Changes since MorphOS 3.17
- Library version is now 53.0.
- Cleaned up the OpenGL extensions advertised by TinyGL:
o GL_EXT_texture_compression_s3tc was advertised with the wrong name, EXT_texture_compression_s3tc
o The following non-existing extensions are no longer advertised:
* GL_ARB_color_table
* GL_ARB_compiled_vertex_array
* GL_ARB_draw_range_elements
* GL_EXT_color_table
o The following extensions do exist, but are not supported, and thus no longer advertised:
* GL_EXT_draw_range_elements
o New driver-independent (or supported by all current drivers) extensions advertised:
* GL_ARB_imaging
* GL_ARB_texture_border_clamp
* GL_ARB_texture_env_dot3
* GL_ARB_texture_mirrored_repeat
* GL_ARB_texture_non_power_of_two
* GL_ARB_transpose_matrix
* GL_ARB_window_pos
* GL_EXT_abgr
* GL_EXT_blend_color
* GL_EXT_blend_equation_separate
* GL_EXT_blend_func_separate
* GL_EXT_blend_minmax
* GL_EXT_blend_subtract
* GL_EXT_multi_draw_arrays
* GL_EXT_texture_env_dot3
* GL_SGI_color_table
* New driver-dependent extensions advertised. Availability depends on the driver in use:
* GL_ARB_fragment_program
* GL_ARB_texture_cube_map
* GL_ARB_vertex_program
* GL_EXT_texture_cube_map
- Every OpenGL 2.1 function now exists in the tinygl.library base. Note that this doesn't mean that TinyGL supports all of OpenGL 2.1's functionality yet, just that the functions exists.
- Added support for cube mapping. (extensions: GL_ARB_texture_cube_map, GL_EXT_texture_cube_map)
- Added support for OpenGL ARB programs. (extensions: GL_ARB_fragment_program, GL_ARB_vertex_program)
- Many OpenGL functions that previously only had some variants of otherwise supported functions available now support all variants. These are functions whose names typically end with a single digit (1, 2, 3 or 4) followed by 1 or two characters to indicate argument type (b, d, f, i, s, ub, ui, us) and then optionally a v, for example glColor3ub(). These functions are:
o glColor#?()
o glEvalCoord#?()
o glMultiTexCoord#?()
o glNormal#?()
o glRasterPos#?()
o glTexCoord#?()
o glVertex#?()
o glWindowPos#?()
- Updated glGetDoublev, glGetFloatv and glGetIntegerv to fix bugs in numerous already supported tags, and added many previously unsupported tags. The following tags are newly supported:
- Added support for the following state getter functions:
o glGetBooleanv()
o glGetLightiv()
o glGetMaterialiv()
o glGetTexGendv()
o glGetTexGenfv()
o glGetTexGeniv()
o glGetTexLevelParameterfv()
- Added support for the following state setter functions:
o glFogiv()
o glLightiv()
o glLightModeliv()
o glMaterialiv()
o glPointParameterf()
o glPointParameterfv()
o glPointParameteri()
o glPointParameteriv()
o glTexGeniv()
o glTexGendv()
- Added support for the following glGetLight#?() tags:
- Added support for glMultiDrawArrays() and glMultiDrawElements().
- Added support for glFinish().
- glGetError() is now implemented and will - for some functions - return standards compliant error codes.
- Added glRectsv().
- Fixed some of the default states in freshly created TinyGL contexts to match what is required by OpenGL:
o Secondary colour
o Raster colour
o Raster secondary colour
o Texture coordinates for texture units > 0
- glGetTexLevelParameter#?() now supports queries of the GL_TEXTURE_1D target.
- A function to obtain OpenGL function pointers at runtime, tglGetProcAddress(), has been added.

- Library version is now 53.2.
- Added support for cube maps.

R200, R300, R400 and R500:
- Library version is now 53.4.
- Texture combiner support has been fixed to be be standards compliant:
o Added/fixed the support for the GL_ADD, GL_ADD_SIGNED, GL_DOT3_RGB, GL_DOT3_RGBA, GL_INTERPOLATE and GL_SUBTRACT texture combiner functions.
o Added support for texture combiner output scaling.
o Any and every combination of GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_ALPHA and GL_ONE_MINUS_SRC_ALPHA operands now work.

- Added support for OpenGL ARB programs.

- Fixed a bug that would cause wrong rendering if an application had gaps in its enabled texture units, for example if only texture units 0 and 2 were enabled.

OpenGL test suite:
- Added texture combiner tests to my OpenGL test suite. All drivers and hardware combinations now pass all tests.

- Please note that any software compiled with the updated SDK will require tinygl.library version 53.0 or higher, and thus either MorphOS 3.18 or MorphOS 3.17 + this separate TinyGL update. If you manually open tinygl.library, you _must_ update your code to request version 53!
- TinyGL's automatic libopen function now requires at least version 53 of tinygl.library.
- TinyGL's link library now comes in both regular and baserel flavours.
- Newly supported OpenGL extensions that introduce new functions to OpenGL are disabled by default. To enable the new extensions, call tglEnableNewExtensions(0). The passed argument _must_ be zero. If you call tglEnableNewExtensions(), then you _must_ use tglGetProcAddress() to obtain pointers to OpenGL functions present in OpenGL extensions. You _must not_ use a custom function for this purpose.
- Includes have been updated to fully support OpenGL 2.1, plus the following extensions:
o GL_ARB_color_buffer_float
o GL_ARB_depth_texture
o GL_ARB_draw_buffers
o GL_ARB_fragment_program
o GL_ARB_fragment_program_shadow
o GL_ARB_fragment_shader
o GL_ARB_framebuffer_object
o GL_ARB_half_float_pixel
o GL_ARB_imaging
o GL_ARB_matrix_palette
o GL_ARB_multisample
o GL_ARB_multitexture
o GL_ARB_occlusion_query
o GL_ARB_pixel_buffer_object
o GL_ARB_point_parameters
o GL_ARB_point_sprite
o GL_ARB_shader_objects
o GL_ARB_shading_language_100
o GL_ARB_shadow
o GL_ARB_shadow_ambient
o GL_ARB_texture_border_clamp
o GL_ARB_texture_compression
o GL_ARB_texture_cube_map
o GL_ARB_texture_env_add
o GL_ARB_texture_env_combine
o GL_ARB_texture_env_crossbar
o GL_ARB_texture_env_dot3
o GL_ARB_texture_float
o GL_ARB_texture_mirrored_repeat
o GL_ARB_texture_non_power_of_two
o GL_ARB_texture_rectangle
o GL_ARB_transpose_matrix
o GL_ARB_vertex_blend
o GL_ARB_vertex_buffer_object
o GL_ARB_vertex_program
o GL_ARB_vertex_shader
o GL_ARB_window_pos
o GL_ATI_fragment_shader
o GL_ATI_separate_stencil
o GL_EXT_abgr
o GL_EXT_bgra
o GL_EXT_blend_color
o GL_EXT_blend_equation_separate
o GL_EXT_blend_func_separate
o GL_EXT_blend_logic_op
o GL_EXT_blend_minmax
o GL_EXT_blend_subtract
o GL_EXT_color_subtable
o GL_EXT_color_table
o GL_EXT_compiled_vertex_array
o GL_EXT_convolution
o GL_EXT_draw_range_elements
o GL_EXT_fog_coord
o GL_EXT_histogram
o GL_EXT_multi_draw_arrays
o GL_EXT_packed_pixels
o GL_EXT_paletted_texture
o GL_EXT_point_parameters
o GL_EXT_rescale_normal
o GL_EXT_secondary_color
o GL_EXT_separate_specular_color
o GL_EXT_shadow_funcs
o GL_EXT_shared_texture_palette
o GL_EXT_stencil_two_side
o GL_EXT_stencil_wrap
o GL_EXT_texture3D
o GL_EXT_texture_compression_s3tc
o GL_EXT_texture_cube_map
o GL_EXT_texture_env_add
o GL_EXT_texture_env_combine
o GL_EXT_texture_env_dot3
o GL_EXT_texture_filter_anisotropic
o GL_EXT_texture_lod
o GL_EXT_texture_lod_bias
o GL_EXT_texture_sRGB
o GL_HP_convolution_border_modes
o GL_NV_blend_square
o GL_NV_texgen_reflection
o GL_S3_s3tc
o GL_SGIS_generate_mipmap
o GL_SGIS_multitexture
o GL_SGIS_texture_edge_clamp
o GL_SGIS_texture_lod
o GL_SGI_color_matrix
o GL_SGI_color_table
o GL_SUN_multi_draw_arrays

Radeon models in Macs
Below is a list of Mac models support by MorphOS with builtin graphics. You can
find your system's identifier by opening up "System Monitor" in the "Utilities"
menu of Ambient and then clicking on "System Details" tab. The name listed
after "Machine:" is your system identifier. Use it to find your corresponding
entry in the table below. An asterisk ("*") in the identifier in the table
below means that it matches with any number in that position.

Model | Identifier | Radeon family
iBook G4 (2003) | PowerBook6,3 | R200 family
iBook G4 (2004) | PowerBook6,5 | R200 family
iBook G4 (2005) | PowerBook6,7 | R300 family
iMac G5 (iSight) | PowerMac12,1 | R400 family
Mac Mini G4 | PowerMac10,* | R200 family
PowerBook G4 Titanium | PowerBook3,3 | R100 family
PowerBook G4 Titanium | PowerBook3,5 | R200 family
PowerBook G4 Aluminium | PowerBook5,* | R300 family

Discrete Radeon models (R200-R500)
Below is a list of discrete Radeon models that are supported by this TinyGL
update. Find the row with the model name of your Radeon graphics card in the
first column. The second column will show which Radeon family this graphics
card belongs to.

Radeon model | Radeon family
Radeon 8500 | R200 family
Radeon 8500 LE | R200 family
Radeon 9000 | R200 family
Radeon 9000 Pro | R200 family
Radeon 9100 | R200 family
Radeon 9200 | R200 family
Radeon 9200 SE | R200 family
Radeon 9250 | R200 family
Radeon 9250 SE | R200 family
Radeon 9500 | R300 family
Radeon 9500 Pro | R300 family
Radeon 9550 | R300 family
Radeon 9550 SE | R300 family
Radeon 9600 | R300 family
Radeon 9600 Pro | R300 family
Radeon 9600 SE | R300 family
Radeon 9600 XT | R300 family
Radeon 9600 TX | R300 family
Radeon 9700 | R300 family
Radeon 9700 Pro | R300 family
Radeon 9700 TX | R300 family
Radeon 9800 | R300 family
Radeon 9800 Pro | R300 family
Radeon 9800 SE | R300 family
Radeon 9800 XL | R300 family
Radeon 9800 XXL | R300 family
Radeon 9800 XT | R300 family
Radeon X300 | R300 family
Radeon X300 LE | R300 family
Radeon X300 SE | R300 family
Radeon X550 | R300 family
Radeon X600 SE | R300 family
Radeon X600 | R300 family
Radeon X600 Pro | R300 family
Radeon X600 XT | R300 family
Radeon X700 | R400 family
Radeon X700 Pro | R400 family
Radeon X800 | R400 family
Radeon X800 GT | R400 family
Radeon X800 GTO | R400 family
Radeon X800 Pro | R400 family
Radeon X800 SE | R400 family
Radeon X800 XL | R400 family
Radeon X800 XT | R400 family
Radeon X800 XT PE | R400 family
Radeon X850 Pro | R400 family
Radeon X850 XT | R400 family
Radeon X850 XT PE | R400 family
Radeon X550 XT | R400 family
Radeon X550 XTX | R400 family
Radeon X700 LE | R400 family
Radeon X700 SE | R400 family
Radeon X700 | R400 family
Radeon X700 Pro | R400 family
Radeon X700 XT | R400 family
Radeon X740 XL | R400 family
Radeon X800 | R400 family
Radeon X800 GT | R400 family
Radeon X800 GTO | R400 family
Radeon X800 Pro | R400 family
Radeon X800 XL | R400 family
Radeon X800 XT | R400 family
Radeon X850 Pro | R400 family
Radeon X850 XT | R400 family
Radeon X1050 | R300/R400 family (this Radeon model name has been used for both R300 and R400 based graphics card)
Radeon X1300 | R500 family
Radeon X1300 PRO | R500 family
Radeon X1300 XT | R500 family
Radeon X1550 | R500 family
Radeon X1600 PRO | R500 family
Radeon X1600 XT | R500 family
Radeon X1650 | R500 family
Radeon X1650 SE | R500 family
Radeon X1650 GT | R500 family
Radeon X1650 PRO | R500 family
Radeon X1650 XT | R500 family
Radeon X1700 FSC | R500 family
Radeon X1700 SE | R500 family
Radeon X1800 | R500 family
Radeon X1800 GTO | R500 family
Radeon X1800 XL | R500 family
Radeon X1800 XT | R500 family
Radeon X1900 | R500 family
Radeon X1900 GT | R500 family
Radeon X1900 XT | R500 family
Radeon X1900 XTX | R500 family
Radeon X1950 | R500 family
Radeon X1950 GT | R500 family
Radeon X1950 PRO | R500 family
Radeon X1950 XT | R500 family
Radeon X1950 XTX | R500 family

Upload Date:Aug 05 2022
Size:4 MB
Last Comments
08 Aug 2022
Update TinyGL.Library