0.8.0rc1 Release Notes

From ShWiki

Codename: Hoegaarden

This is the second release candidate for the stable release of Sh.

It fixes most issues related to 64-bit operating systems, ATI GPUs, Visual Studio 2005 and OS X.

Aside from a number of small bug fixes, two memory leaks have also been eliminated and the dead code remover has been improved.

An SDL example is now available in the examples directory along with Visual Studio project files for all other examples.

The following issues are still outstanding:

If you encounter any other problems with this release, please contact us through our mailing list.

Download Sh now!

--Francois 12:41, 16 February 2006 (EST)

Changes

2006-02-13  Francois Marier  <francois@serioushack.com>

	* backends/gl/GlslBackend.cpp, ArbBackend.cpp: Remove the
	calls to new and delete in DLLMain, it's now handled by
	instantiate_backend.

2006-02-10  Francois Marier  <francois@serioushack.com>

	* backends/gl/GlBackend.cpp (GlBackend): Prevent double
	registration of the GlBackend DLL.

2006-02-09  Francois Marier  <francois@serioushack.com>

	* src/sh/ShSyntax.hpp: Add extra brackets to SH_BEGIN and SH_END
	to prevent compilation when SH_END is missing (issue290).

	* backends/cc/Cc.cpp (allocate_outputs): Initialize outputs to
	zero in order to be consistent with GPU backends.

	* backends/gl/GlslEmit.cpp, ArbEmit.cpp: Remove the ATI hacks for
	DIV and MOD.  Tweak the unit tests instead.

	* backends/gl/ArbCode.cpp (ArbCode): Fix the ATI_draw_buffers code
	for ATI on Linux.

2006-02-08  Francois Marier  <francois@serioushack.com>

	* src/sh/ShBackend.cpp (load_all_backends): Fix an exception
	thrown when SH_BACKEND_DIR is not set and no backend has been
	specified.

	* backends/gl/ArbCode.cpp (print): The option to output in the
	shader should be ARB_draw_buffers if ATI_draw_buffers is not
	defined.

	* backends/cc/Cc.cpp (load_shader_func): Must compile the programs
	with -fPIC to work on 64-bit machines.

	* src/sh/ShTextureNode.cpp (initialize_memories): Improve the size
	check for mipmapped textures and make it a runtime error instead
	of an assertion.  Move that check to build_mipmaps since textures
	filtering might be set incorrectly the first time the memory is
	initialized.

2006-02-08  Stefanus Du Toit  <sdt@serioushack.com>

	* src/sh/ShSwizzleImpl.hpp: Check for __BIG_ENDIAN__ define.
	
	* src/sh/ShArray.hpp: Remove cyclic reference on BaseTexture.hpp.
	
	* src/sh/ShBackend.cpp: If an environment variable SH_BACKEND_DIR
	is set on OS X or Linux, use it (and only it) to search for
	backends. This is useful for IDEs. Should probably be done on
	Windows as well.
	
2006-02-07  Francois Marier  <francois@serioushack.com>

	* src/sh/ShAttribImpl.hpp, ShAttrib.hpp (ShAttrib): Make the
	constructor take a const array (issue283).

2006-02-07  Filip Spacek  <filip@serioushack.com>

	* src/sh/ShVariableNode.cpp, ShVariableNode.hpp: Delete variable
	nodes allocated using the global operator new

2006-02-07  Andrew Lauritzen  <atlaurit@serioushack.com>

	* backends/gl/GlslSet.cpp, GlslSet.hpp, GlBackend.hpp,
	GlBackend.cpp: Changed GLSL backend sets to always bind, and query
	the GL state to determine whether to unbind. This is
	necessary for multi-GL-context situations.
	
2006-02-02  Francois Marier  <francois@serioushack.com>

	* backends/gl/GlslEmit.cpp, src/sh/ShTransformer.cpp
	(allocate_constant): Fix memory leak.

2006-02-01  Francois Marier  <francois@serioushack.com>

	* backends/gl/GlslEmit.cpp, GlslCode.hpp (emit_logic): Fix the
	destination cast.
	(emit_log): Work-around for log(1) != 0 on ATI.
	(emit_ati_workaround): Work-around for DIV and MOD on ATI.

2006-01-31  Francois Marier  <francois@serioushack.com>

	* backends/gl/GlslEmit.cpp, GlslCode.cpp: Remove the table lookup
	caching code to work around gcc crashes with ATI on Linux.

2006-01-31  Filip Spacek  <filip@serioushack.com>

	* src/sh/ShOptimizations.cpp: Add a simple pass to reorder
	statements in order to reduce the number of live variables at any
	time.

2006-01-30  Francois Marier  <francois@serioushack.com>

	* backends/gl/GlTextures.cpp: Check for errors when getting the
	list of GL_EXTENSIONS and display a warning.

2006-01-30  Stefanus Du Toit  <sdt@serioushack.com>

	* src/ShMeta.hpp, src/ShMetaImpl.hpp, src/ShMetaForwarder.hpp,
	src/ShMetaForwarder.cpp: Allow iterating through meta data with
	begin_meta and end_meta functions.
	
2006-01-28  Andrew Lauritzen  <atlaurit@serioushack.com>
	
	* backends/gl/GlslEmit.cpp: Cast GLSL logical operations (<, >,
	==, etc) to statement destination types (ex. float). This resolves
	issue279, where not having this case would cause the shader to
	fail to compile.
	Fixed discard on ATI cards. (Needs to cast operand of bool/bvec
	and use "any" on vector operands).
	
2006-01-27  Francois Marier  <francois@serioushack.com>

	* backends/gl/ArbEmit.cpp, ArbCode.hpp (emit_div): Add a hack for
	fixing division by the same number on ATI.
	(real_div): refactor the code to remove this function

2006-01-19  Stefanus Du Toit  <sdt@serioushack.com>

	* src/ShOptimizations.cpp: Don't mark variables with decls
	outside this programs as live because decls are currently
	broken. Luckily, they're not really necessary.

	* src/ArbCode.cpp: Remove unnecessary TODO. NVVP and NVFP are
	different things entirely.

2006-01-19  Barold Genova  <barold@serioushack.com>

	* configure.ac: Add configure check for zlib, which libpng
	depends on.  This fixes the case where libpng and zlib are
	both static libraries and the linker is not aware of the
	dependency.

2006-01-18  Stefanus Du Toit  <sdt@serioushack.com>

	* src/ShVariantImpl.hpp (encodeArray): Use "," since the purpose
	of encodeArray is to provide C-style array declarations.
	
	* backends/gl/WGLPBufferContext.hpp: Prefer ATI extensions for
	floating point buffers.
	
2006-01-16  Francois Marier  <francois@serioushack.com>

	* backends/gl/GlslEmit.cpp (emit_texture): Apply the right swizzle
	if the destination size doesn't match the texture size.

2006-01-12  Francois Marier  <francois@serioushack.com>

	* src/ShLibGeometryImpl.hpp (reflect): Actually normalize b as
	mentioned in the book.

2006-01-10  Francois Marier  <francois@serioushack.com>

	* src/ShBackend.cpp, ShBackend.hpp, backends/cc/Cc.hpp, Cc.cpp,
	backends/gl/ArbBackend.cpp, GlslBackend.cpp, GlBackend.cpp,
	GlBackend.hpp: Turn name() and version() into non-virtual
	functions which return the contents of member variables set by the
	backend constructors.  

	* src/ShBackend.cpp (~ShBackend): Add assertions to make sure the
	backend name is valid and exists in the map.

2006-01-06  Barold Genova  <barold@serioushack.com>

	* src/ShBackend*: Add new LibraryInformation class that
	stores the backend handle and entry points.  This allows the
	use of statically linked backends.

	* src/ShSyntax*: Add new shRegisterBackend to allow using
	backends that are not dynamically loaded.

	* src/ShSwizzleImpl.hpp: Use __PPC__ as big endian flag
	instead of __APPLE__.

2006-01-04  Francois Marier  <francois@serioushack.com>

	* src/ShVariantImpl.hpp: Use semicolons instead of commas as the
	separator for array initialization.  This avoids a problem with
	the stringstream constructor in VS2005.
	
	* backends/gl/GlslVariable.cpp (GlslVariable): Replace semicolons
	with commas since the behaviour of encodeArray() changed.

2005-12-12  Francois Marier  <francois@serioushack.com>

	* backends/gl/GlslEmit.cpp (emit_cond): Check the GL_VENDOR safely
	and ignore it if it returns a NULL string.

2005-11-30  Stefanus Du Toit  <sdt@serioushack.com>

	* src/ShGeneric*: Undo Hans's change from 2005-11-29 as it
	breaks a few things. This is done with the intention on
	adding it back and fixing those things properly in 0.9.

2005-11-30  Francois Marier  <francois@serioushack.com>

	* src/ShLibMiscImpl.hpp (poly, sort): Avoid using ShGeneric as a
	temporary variable.  This fixes the 'poly' unit test.

2005-11-29  Hans-Friedrich Pabst  <hfp@users.sf.net>

	* src/ShGeneric*: The C++ Standard says that a templated
	copy c'tor will be never instanciated for the class type itself.
	Example: You need to provide ShGeneric(const ShGeneric& other)
	also if you have already implemented an conversion copy c'tor:
	template<typename T2> ShGeneric(const ShGeneric<N, T2>& other).

	Before the fix: A copy construction of a ShGeneric (without
	conversion) slices the other ShGeneric down to a ShVariable.

	ShGeneric provides a copy c'tor now.

2005-11-21  Francois Marier  <francois@serioushack.com>

	* backends/gl/ArbCode.cpp (updateUniform): Only display the
	warning once.

	* src/, backends/gl, backends/cc: Convert most ShPointer
	parameters to const references to ShPointer (thanks to pmr for the
	patch)

2005-11-20  Stefanus Du Toit  <sjdutoit@uwaterloo.ca>

	* src/ShTexData.hpp, src/ShTexDataImpl.hpp, src/ShAttrib.hp,
	src/ShBaseTexture.hpp: Avoid circular inclusion of Impl files.
	* xcode: Update to Xcode 2.2, many many fixes.
	* backends/gl: Several small fixes for Apple OS X build.

2005-11-20  Hans-Friedrich Pabst  <hfp@users.sf.net>

	* src: Some tiny problems (compile warnings) avoided.
	Assignment operator could not be generated.
	Base-from-member initialization problem.
	* src/ShStructural.cpp: Add range check before iterator
	decrement (remove duplicate successors; make succs unique).
	* backends/gl: Some tiny problems (compile warnings) avoided.
	Assignment operator could not be generated.
	Some bit-ops (unsigned int) forced to bool.
	* src/ShStructural.hpp: Public nested classes (CfgMatch)
	needs (different heaps) to be exported (SH_DLLEXPORT).

2005-11-19  Hans-Friedrich Pabst  <hfp@users.sf.net>

	* src: Some conditions (preprocessor) are modified to allow
	new targets (platform/compiler).

2005-11-18  Francois Marier  <francois@serioushack.com>

	* src/ShProgramNode.cpp (compile): Add a check for empty
	ShProgram and return an error.

2005-11-18  Hans-Friedrich Pabst  <hfp@users.sf.net>

	* src/ShStructural.cpp: C'tor (make preds unique) Decrementing an
	iterator needs some check against the begin of the range.
	* src/ShLinearAllocator.cpp (allocate): multiset requires strict
	weak ordering; LifeToken (operator<): if (a<b) -> !(b<a).

2005-11-17  Hans-Friedrich Pabst  <hfp@users.sf.net>

	* Boost Build System V2 (www.boost.org/tools/build/v2/index.html)
	added (how to build instructions coming soon).

2005-11-09  Hans-Friedrich Pabst  <hfp@users.sf.net>

	* backends/gl/GlBackend.cpp: glUniform[X]fvARB/glUniform[X]ivARB
	Match definitions as declared in GlBackend.hpp (Win32 only, VC8).