Welcome to MorphOS-Storage, a webserver dedicated to MorphOS users. ©2016-2022 Meta-MorphOS.org
Description:Second public MorphOS TinyGL update resulting from the TinyGL bounty at https://tinygl.molsen.co.za/
Developer/Porter:bigfoot
Homepage:https://morph.zone/modules/newbb_plus/viewtopic.php?topic_id=13285&forum=49
Readme:
MorphOS TinyGL update 2022-09-08
================================
This is the third public MorphOS TinyGL update resulting from the TinyGL
bounty at https://tinygl.molsen.co.za/.

The main changes in this update are:
- Various shader related bug fixes and optimisations.

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.

Examples
--------
This update contains three 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.

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 example 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. Many thanks to Andre Siegel for supplying the artwork
for this example!

The "Shader Test" example demonstrates the use of OpenGL vertex and fragment
shaders to create effects that would not possible with the fixed function
OpenGL pipeline. This example uses a vertex shader to animate the rendered
object and a fragment shader to create custom lighting effects as well as
conditional discarding of output fragments, creating the illusion that the
rendered model is more detailed than it actually is.

SDK
---
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:

delete gg:ppc-morphos/lib/libGL.a
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
command:

make

Changes from 2022-09-04 to 2022-09-08
-------------------------------------
tinygl.library:
- Library version is now 53.2.
- Reading gl_ModelViewProjectionMatrix in a shader now works correctly.
- Shaders now work correctly after window resize.
- Similarly fixed a corner case issue with textures after window resize.
- Fixed a bug making program objects without both a vertex and a fragment shader present fail.

r300.library:
- Library version is now 53.6.
- Now supports shaders that read back from output registers.
- Now supports shaders which use write masks in combination with texture instructions.
- Fixed the fragment shader compiler to ignore source register swizzles for unused source register components in texture instructions.
- Optimised the swizzle emulation of the fragment shader compiler, resulting in smaller and faster compiled shaders.

Changes from 2022-08-05 to 2022-09-04
-------------------------------------
tinygl.library:
- Library version is now 53.1.
- Added support for OpenGL shaders.
- Fixed glMultiTexCoord#?(), which was broken in the previous beta release.
- Fixed glClientActiveTexture() to properly validate app input and report the required OpenGL errors.
- Fixed glBindTexture() to disallow binding a texture to a target where the texture's type doesn't match.
- Reworked how cube map textures are handled, cube map texture support should now be a bit more robust.
- The ARB program parser now respects driver limits when parsing ARB programs.
- Increased the number of supported texture units from 4 to 8.
- No longer skips array-based draws where the coord array isn't enabled. This is useful for program/shader-based rendering which pass vertex coords in a generic array.
- New extensions advertised, depending on driver support:
o GL_ARB_fragment_shader
o GL_ARB_shader_objects
o GL_ARB_shading_language_100
o GL_ARB_vertex_shader

r200.library:
- Library version is now 53.3.
- Added support for GL_TEXTURE_WRAP_R.

r300.library:
- Library version is now 53.5.
- Added support for cube maps.
- Fixed ARB programs to work correctly regardless of which fixed function texture units are enabled.
- Added support for reading the fragment window position in fragment programs.
- Increased the number of supported texture units from 4 to 7.
- Fixed the handling of killing/discarding a fragment in fragment programs.
- Fixed the fragment program compiler to emulate unsupported instructions and source operand modifications.
- Fixed to handle outputting colour values in fragment program stages other than the last stage.

Changes since MorphOS 3.17
--------------------------
tinygl.library:
- Library version is now 53.2.
- 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_fragment_shader
* GL_ARB_shader_objects
* GL_ARB_shading_language_100
* GL_ARB_texture_cube_map
* GL_ARB_vertex_program
* GL_ARB_vertex_shader
* 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)
- Added support for OpenGL shaders.
- 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:
o GL_BLEND_COLOR
o GL_BLEND_EQUATION_ALPHA
o GL_BLEND_EQUATION_RGB
o GL_COLOR_WRITEMASK
o GL_CURRENT_RASTER_SECONDARY_COLOR
o GL_DEPTH_CLEAR_VALUE
o GL_DITHER
o GL_FOG_COLOR
o GL_FOG_DENSITY
o GL_FOG_END
o GL_FOG_MODE
o GL_FOG_START
o GL_LIST_BASE
o GL_LIST_INDEX
o GL_LIST_MODE
o GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
o GL_MAX_TEXTURE_COORDS
o GL_MAX_TEXTURE_IMAGE_UNITS
o GL_PROGRAM_ERROR_POSITION_ARB
o GL_STENCIL_CLEAR_VALUE
o GL_STENCIL_FAIL
o GL_STENCIL_FUNC
o GL_STENCIL_PASS_DEPTH_FAIL
o GL_STENCIL_PASS_DEPTH_PASS
o GL_STENCIL_REF
o GL_STENCIL_TEST
o GL_STENCIL_VALUE_MASK
o GL_STENCIL_WRITEMASK
o GL_TRANSPOSE_MODELVIEW_MATRIX
o GL_TRANSPOSE_PROJECTION_MATRIX
o GL_TRANSPOSE_TEXTURE_MATRIX
- 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:
o GL_CONSTANT_ATTENUATION
o GL_LINEAR_ATTENUATION
o GL_QUADRATIC_ATTENUATION
o GL_SPECULAR
o GL_SPOT_CUTOFF
o GL_SPOT_DIRECTION
o GL_SPOT_EXPONENT
- 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.
- Fixed glClientActiveTexture() to properly validate app input and report the required OpenGL errors.
- Fixed glBindTexture() to disallow binding a texture to a target where the texture's type doesn't match.
- Increased the number of supported texture units from 4 to 8.
- No longer skips array-based draws where the coord array isn't enabled. This is useful for program/shader-based rendering which pass vertex coords in a generic array.
- A function to obtain OpenGL function pointers at runtime, tglGetProcAddress(), has been added.

R200:
- Library version is now 53.3.
- Added support for cube maps.
- Added support for GL_TEXTURE_WRAP_R.
- 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.

R300, R400 and R500:
- Library version is now 53.6.
- Added support for cube maps.
- Increased the number of supported texture units from 4 to 7.
- 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.

R300/R400:
- Added support for OpenGL ARB programs.
- Added support for OpenGL shaders.

R500:
- 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.

SDK:
- 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 | R300 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:Sep 08 2022
Category:System/Update
Download:TinyGL-Update-2022-09-08.lha
Install:
Size:4 MB
Downloads:121
Screenshot(s)
Last Comments