-
Notifications
You must be signed in to change notification settings - Fork 99
Change Logs
wuye9036 edited this page Jul 10, 2015
·
2 revisions
- Ported code repository from Hg to Git
- Separated resources and third parties from main repository
- Upgrade LLVM to 3.6.1
- Removed most MSVC 12.0 level 3 warnings.
-
Feature and improvements
- New sample framework is available. Playback, interactive, benchmark and testing support are integrated to one framework
- Improved UMD device
- Developing register-file based shader compiler and runtime
- Introduced C++ 11 features (lambda and for-each) to replace boost features
- Simplified unit tests files for shader testing
- Renamed robust_test to death_test
- Refactor fixed_string to make it simpler
- Ported sasl enums to C++ 11 enums
- Remove unused WTL code
- Added constants for indicating compilation configuration.
-
Bug fixing
- Remove unused code for old vertex_shader_unit.
- Fixed align_free crash while pointer is null.
- Fixed an crash error in d3d11_swap_chain deconstructor while present has not been called before release.
- Fixed Font crash while msyh.ttc is not existed on system
- Fixed performance issue while converting rgba8 to bgra8
- Now render_core returns immediately if color targets and DS target are all none
-
Feature and improvements
- Rasterizer/Pixel shader/Sample rendering are working on quad(2x2)
- Add two new vertex cache algorithm, and common vertex cache code was extracted to vertex_cache_impl
- Remove old vertex_shader_unit. Now vertex shader always use host.
- Add time stamp profiling into pipeline
- New benchmark framework
- Benchmark could generate detailed performance report as JSON format
-
Optimization: 27% for Sponza and 6.6% for complex mesh
- geom_setup_engine are shared between draw calls
- Add fetch3 to reduce fetch function called.
- New vertex cache algorithm to reduce time of vertex gathering.
- Eliminated unused malloc/free in geom_setup_engine.
- For early-z test, depth-test-write are executed together.
-
Bug fix
- Fixed interpolation error in lerp_n.
- Fixed backend_input_pixel counter.
- LoD could be shared in quad pixels in cpp shader.
- Host will return null pointer when vertex shader is not set.
- Fixed bug of early-z condition computation.
-
Building and deployment
-
Supported platforms changed:
- vs2012 or higher;
- gcc 4.7 or higher;
- Support MinGW on Windows;
- Support GCC on Linux;
- Boost building parameters changed for cross platform support.
- SCL macros are moved to CMake files.
-
Supported platforms changed:
-
Third-parties
- LLVM upgraded to 3.4.
- LLVM-boost workaround code is removed.
-
Optimization
- Performance improved 60% - 70%
- Removed duplicated triangle info computation.
- Add quick test for clipper.
- interpolation function works on quad to reduce multiply ops.
- c++ pixel shader
- has quad info to instead triangle info.
- ddx/ddy is computed by subtraction directly.
- since step-subtraction method for ddx/ddy is removed, related functions are removed also.
- removed unused vso operators.
- optimized derivative computation by edge.
- Reused transformed verts pool in default_vertex_cache.
- move front_face from vso to triangle_ctx.
- vso viewport transform are executed parallel.
-
Refactor
- Refactor file organization of shader/shader_regs/shader_regs_op
- cube map implementation was changed.
- interfaces of texture/sampler/surface have been changed.
-
Feature
- ESM-based Shadow Map demo and stencil based mirror/reflect demo;
- MinGW and MinGW64 were supported;
- Depth and stencil can be cleaned separately;
- Pipeline could works with DS target only;
- Now pixel shader could overwrite depth(PS depth output);
-
Refactor
- Texture is not an available resource for shader, but sampler holds texture and could be used in shader.
- All third-party libraries is intergated as source code and CMake was added to them.
- Map/Unmap is belongs to renderer but not resource for synchronization.
- Due to C++11/boost.locale, implementation of multibyte-unicode conversation was improved.
- Mask of swizzle/write mask is not uint32 any longer. elem_indexes is introduced thus mask is strong-typed.
- Improve build scripts and CMake files for:
- Executable of build/make/compiler toolchains detection is supported or improved.
- Clean variable names of CMake.
- DirectX SDK will not be used in VS2012 or later.
- Report and interrupt immediately once error occurs.
- Code of project configuring and building were refractored.
- Cleanup code of texture input/output.
-
Bug fixes
- Fixed a layout computation bug for "float4 main(): SV_Position"
- Fixed count_bits functions.
- Buffer allocation is 16-bytes aligned.
- Fixed error that culled pixel rendered to frame buffer.
- Fixed default Z-range in pipeline.
- Fixed a bugs of GL swap chain.
- Fixed a potential issues in member of __m128 settings.
- Fixed bugs caused by incorrect cache in shims.
- Fixes batch of bugs in shader compiler.
- Fixed windows kit and d3d detection.
-
Refactor pipeline!
- All commands (draw, clear, asynchoronous begin/end) were treated as commands. Every command has a immutable state object.
- Old renderer_impl was removed.
- render_core was added to execute command .
- New renderer_impl is designed to set or get status from state object.
- Renderers were refactored to async_renderer and sync_renderer. They are all based on renderer_impl and render_core
- async_renderer holds an asynchronized queue for executing commands asynchronized.
- Clipper is stateless between primitives.
- Add new stage geom_setup_engine to process IA and clipping. Its output is primitives for rasterizer.
- Add thread_context to pipeline. It will make code more readable when function is parallel called.
- Interpolation method was changed to base of total derivative but not integral any more.
- Replace "presenters" with swap chain.
- Third-party and tool-chain changes
- Upgraded LLVM to 3.3.
- Only support VS2010 and later.
- Remove dependencies of GDI+ and D3DX.
- New features
- Support performance counter.
- Support early-z (per sample).
- Bug fixes and misc
- Compact Sponza scene file by collapse vertexes. It will make Sponza demo ~30% faster.
- Fixed bugs of default_vso2reg.
- Replace macro guard with pragma.
- Now set_variable of cpp shader is async-safey.
- 蛇年新春快乐!
- Optimized performance of interpolator ~25% - 50%.
- New architecture of shader is applied to Vertex Shader.
- Visual Studio 2012 have been supported offically.
- The minimum requirement of boost is 1.53.0 for now.
- Remove some implementations from eflib when it is supported by boost.
- Build problems caused by DX SDK environment are fixed.
- dynamic_lib: Shared library will be free when reference count is 0.
- Some bugs fixed.
- The last update of SALVIA in 2012. Happy new year!
- Optimized performance of parser and semantic analyzer. The performance is increased 70% in debug mode and about 150% in release mode.
- *New architecture of code generation which support pixel shader much better than old. *
- ABI of data transferred between pipeline and pixel shader was changed.
- Code clean.
- Explicit cast operator has been supported.
- Bug fixes:
- fast_roundi always returns 0 when /fp:fast is enabled on MSVC.
- Add SEH guard to preventing JIT error stops the whole test.
- Add cast_f2i.
- All comments are in English for now.
- Now API are called asynchronized.
- Add inference for l-value and r-value.
- Fixed a bug that input data will be modified if semantic variable have been assigned in vertex shader.
- Fixed threadpool compilation error when Boost 1.51 is used.
- Refactor code generation.
- Now LLVM code generator is the only valid code generator.
- Fixed some compilation error and run-time bugs.
- Add "--clean" option to build_all.py to support clean build.
- Add 28 intrinsic support to vertex shader.
- Support anisotropic texture filter and added an demo.
- Integrated FreeType2, added font drawing code and demo for it.
- Re-organize documentations.
- Sorry I am late!
-
Add 3 IMPORTANT samples!
- Skinning Mesh
- Multiple stream based vertex blending
- Terrain Rendering based on Vertex Texture Fetching
- Shader compiling was at least 11% faster than old one.
- Support simple COLLADA model.
- Context of semantic analysis was changed.
- Refactor code about code generation.
- All operators enabled for scalar, vector and matrix in Vertex Shader.
- Intrinsics now support matrix parameters.
- Add new intrinsics support to Vertex Shader: sin/cos/tan/asin/acos/atan/ceil/floor/log/log2/log10/rsqrt/exp2/ldexp.
- Support vector and matrix per-element implicit cast.
- Add system include and include search path.
- Add missing LLVM files to fix compiling bugs.
- Port eflib matrix and vector to generic version.
- Refactor code generators and external intrinsics machanism.
- Add intrinsics abs, any, all, asint, asuint, asfloat, distance, dst, exp, fmod, lerp, radians, degrees support to vertex shader and general for scalar and vector.
- Add operators div, mod, bitwise and, bitwise or, logic and, logic or, comparison operators, shift operators support to vertex shader and general for scalar and vector.
- Add include and virtual include to SASL. Didn't support system include search path yet.
- Handling more errors in semantic.
- Bool operators are no longer short-evaluation. Only logic bool operator for scalar in general is shortly.
- Project host now depend on driver.
- Multiple swizzle/write-mask now works.
- Now defining variable in loop is no longer cause a stack overflow.
- Implicit cast is executabe when it is needed in before call.
- Add error handling for tokenizer and parser
- Partially support error report for semantic analysis
- Split sasl_compiler to sasl_driver and sasl_command.
- sasl_driver is facade of compiler classes.
- sasl_command is compiler as command line executable file .
- Now jit test is based on driver.
- Add document in Chinese.
- Add CMake Project Group support.
- Add emit_abs for SISD.
- Fixed a false error report of 'no overloads of operator '#''
- Fixed presenter name bug in ObjLoader when DX is enabled.
- Fixed cmake generator error when vs2005/2008 used.
- Add tex2D support to pixel shader.
- Fixed a crash bug on ntx64 release without debugger.
- Add constructors to builtin type.
- Integrated Pixel Shader to Pipeline!
- Fixed jittering on Sponza when grand band is enabled.
- Default clip planes is reduced to 2 faces.
- Scanline based rasterizer was removed, now Larrabee rasterizer is as default.
- Pixel Shader now support for, while and do-while loop.
- Add ddx and ddy support.
- Add texture sampler prototype to pixel shader.
- Optimized rasterizer.
- Now pixel shader of SASL support if-statement via execution mask.
- Fix a bug that cmake cannot be customized.
- Fix ambiguous overloads bug caused by vector1.
- Fix a bug of memory alignment error in jit test.
- Add a prototype of SSA analyser, in future it is used for optimization.
- Now DirectX depenencies is not necessary of SALVIA any more.
- Visual C++ Express now could be used to compile SALVIA. (x86 32-bit only)
- Added intrinsics 'dot', 'cross' and 'sqrt' support to pixel shader.
- Fixed unaligned memory bug because asm generated by MSVC x86 is not keep the stack pointer 16 bytes aligned.
- Added ALL-IN-ONE build script.
-
Finished prototype of pixel shader compiler.
- Implemented memory layout of parameters and variables of pixel shader.
- Added operators '+', '-', '
*
' support to scalar and vector on SIMD mode. - Added swizzle and write mask support to vector on SIMD mode.
- Removed pre-built llvm libraries located in 3rd_party/llvm
- Moved llvm source code from 3rd_party/src/llvm to 3rd_party/llvm
- Renamed platform name and re-organized build directories.
- Arranged documents.
- Added project depenedency to fix test installation.
- Now vertex output data is 16 bytes aligned.
- Members of vertex output data now confirms C member alignment.
- Added switch-case support to vertex shader
- Integer and floating point now could be casted to boolean implicit.
- Fixed unaligment memory access exception by SSE instruction while platform is x64 or SSE is enabled on x86-32.
- New features have been added to vertex shader:
- if-then-else, while, for statements.
- break and continue statements
- intrinsics support: mul, cross, sqrt and dot
- SSE acceleration on x86 and x64
- Refactored code generation in SASL.
- Regression test framework and tests for Just-In-Time.
- Add new demo Sponza.
- Add 32-bit index support for wavefront obj.
- Fixed a mipmap computation bug.
- Fixed a culling bug.
-
Project configuration and management:
- Code repository now changed to Mercurial.
- Rename !SoftArt to SALVIA.
- Logo of SALVIA is published.
- Format of check in log now obey google issue tracker's demands.
- Added unit test and auto test system.
- Merge LLVM 2.9 source code to repo.
- Fixed some compatibility bugs between LLVM and Boost.
- Boost now requires 1.44 or later.
- Add a tool for statistic code lines.
- Documents were updated.
-
Graphis:
- Add an OpenGL based presenter.
- Optimize subdivision based rasterizer.
- Changed namespace and organization of EFLIB.
- Add centroid sampling support.
- Add 2x and 4x MSAA support.
-
SASL:
- Add a new combinator based parser to replace Boost.Spirit for reduce compiling time and object file size.
- Add preprocessor based on Boost.Wave.
- Add name mangling and overloading.
- Finished shader ABI design.
- Add JIT support.
- Cross compilers is supported better.
- Add CL styled compiler.
- Add a reusable multi-targets compiler framework.
- Add regression test to compiler.
- Support following language features:
- Scalar types, vector types, structures
- Sequential statements.
- Function declaration and definition.
- Arithmentic operators and member operators(.)
- Swizzle and mask.
- Full render pipeline.
- New Larrabee like rasterizer is enabled and optimized.
- Optimized texture sampling code by SSE.
- Added shader ABI specification.
- Protype of parser, semantic analyzer and code generator of shader compiler works now.