Advertisement
Guest User

WiiU Wii U Cafe SDK GX2 Release Notes

a guest
Aug 7th, 2014
2,000
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 67.77 KB | None | 0 0
  1.  
  2. GX2 Release Notes
  3. Release Notes
  4.  
  5. This page lists all fixes and enhacements made to the 3D Graphics APIs, related libraries, and tools. The numbers appended to each note correspond to our internal bug (and feature) tracking software.
  6. SDK 2.09.10 [2013-04]
  7.  
  8. Documentation:
  9. Added TOC and headers to the 3D Graphics API (GX2) Overview (#7548)
  10. Added Hardware PCF demo and documentation (#6965)
  11.  
  12. SDK 2.09.07 [2013-03]
  13.  
  14. Breaking Changes:
  15. We reverted the breaking change from SDK 2.09.06, as some developers still require 32-bit tools. Please skip SDK 2.09.06 to avoid breaking changes in tool paths. (#6956)
  16. Bug Fixes:
  17. The breaking change from SDK 2.09.03 to modify shaderUtils and texUtils for C-compatibility was corrected. There was a mismatch between the headers and the binaries due to incorrect build procedures. (#1723)
  18. Enhancements:
  19. GX2_MAX_SAMPLERS was increased from 16 to 18 to reflect the actual hardware limit. (#6051)
  20. Added assert when GX2DrawDone is called from a display list. (#7393)
  21.  
  22. SDK 2.09.06 [2013-03]
  23.  
  24. Breaking Change:
  25. Most 32-bit tools have been removed. Graphics tools now take the form *toolname*64.exe (e.g. TexConv2.exe is now TexConv264.exe); gfx binaries are now located in system/bin/tool, gfx libraries are now located in system/lib/tool. (#6956)
  26. Enhancements:
  27. DMAE alignment restrictions for copy & fill operations are reduced from 8 bytes to 4 bytes to match hardware requirements. (#7205)
  28. Shader Compiler Enhancements
  29. Enable shaderUtils work-around for bug #4122 by allowing any constant expression in layout(binding=xxx). Previously only constant integers were allowed. (#4122)
  30.  
  31. SDK 2.09.05 [2013-02]
  32.  
  33. Bug Fixes:
  34. Updated various headers (gx2Manage.h gfd.h mat44.h matVec.h) to avoid warnings with diag_error 1798 enabled. (#2187)
  35. Shader Compiler Enhancements
  36. Fixed an internal bug which was causing use of gl_FragCoord to sometimes cause an assert. gl_FragCoord should be usable now. (#4541)
  37.  
  38. SDK 2.09.04 [2013-02]
  39.  
  40. Enhancements:
  41. Updated demos to properly deal with arbitrary frame buffer sizes. (#2057)
  42. Shader Compiler Enhancements:
  43. The shader compiler now removes unused sampler symbols, even if they are declared uniform. (#5429)
  44.  
  45. SDK 2.09.03 [2013-02]
  46.  
  47. Breaking Change:
  48. Functions and structures in shaderUtils and texUtils were modified (bools and namespaces were removed) in order to be C-compatible and to compile under GHS. Please update your tools to the newest dlls at the earliest convenience. Until then, GX2 is compatible with the tools from SDK 2.09.03. (#1723)
  49. Enhancements:
  50. Added GX2SetAAMode to allow setting AA mode explicitly (Note: AA mode is still automatically set when GX2SetColorBuffer is called with GX2_RENDER_TARGET_0).
  51. Added GX2UTSetRenderTargets to help with setting multiple render targets and depth-only rendering. (#3895)
  52. Added GX2SetStreamOutExplicitOffset fort setting explicit streamout write offset. (#6592)
  53. Added GX2GetMainCoreId to obtain which core GX2Init was called from. (#5658)
  54. Documentation:
  55. Many minor updates and corrections were made throughout the documentation. (#3010)
  56. Added clarification for retrictions on use of GX2SetTVBuffer with DRC camera. (#6720)
  57.  
  58. SDK 2.09.02 [2013-01]
  59.  
  60. Enhancements:
  61. Added CB corruption detection to GPU hang detection code. Not all CB corruption can be detected with this solution, but this may help identify why a GPU hang occurred. See CPU write-gatherer may corrupt command buffers and General GPU7 hang debugging. (#6925)
  62. PM4Parse.exe now parses PFP and ME headers to output opcode names. This may help when parsing GPU hang dumps. (#6889)
  63. Added support for GX2_SURFACE_FORMAT_D_D24_S8_FLOAT (#2185)
  64. Bug Fixes:
  65. Added additional coverage to the WPG corruption bug work-around. This may increase the CPU cost of GX2 commands. We expect the overall impact to be small (< 1%). Please contact support if significant performance drops are detected. (#6442)
  66. Updated GX2InitDepthStencilControlReg to correctly initialize all associated registers. Some elements of the reg structure were unitialized. (#5940)
  67. Updated GX2UTCopySurfaceRect to adjust the viewport and scissor according to miplevels. (#6494)
  68. Documentation:
  69. Added GX2HardwarePage. This is a high-level overview of the GPU7 hardware.
  70. Converted and integrated GFX documentation with the SDK documentation. (#1575)
  71. Added a summary of the WG corruption issues. See CPU write-gatherer may corrupt command buffers.
  72. Added page: GX2SurfaceAlignments. (#743)
  73. Added subsection: Command Fifo (#6153)
  74. Corrected outdated documentation and added pitfall warnings to GX2SetColorBuffer, GX2SetDepthBuffer, GX2SetSwapInterval, and GX2 Display Lists. (#6255, #6457)
  75. Shader Compiler Bug Fixes:
  76. The shader compiler now correctly marks uniform blocks as used when they are only referred to in return statements. (#6672)
  77. Fixed evaluation of the clamp, min, and max operators in shader programs when the arguments were constants with different types; previously these were promoted to double, which often was incorrect, now the default type is float unless one of the arguments is a double. (#6833)
  78. Fixed the parsing code for the output path for dump files produced by the -d option so that paths containing "." or ".." work correctly. (#2128)
  79.  
  80. SDK 2.09.00 [2012-12]
  81.  
  82. Enhancements:
  83. New APIs to deal with GPU hang detection and GPU reset have been added. It is also possible to configure automatic GPU hang detection and reset. For details, please refer to the APIs GX2SetMiscParam, GX2GetMiscParam, and GX2ResetGPU. (#2436, #4691)
  84. Shader Compiler Bug Fixes:
  85. The shaderUtils library could crash under 64 bit versions of Windows if addresses above 4GB were needed. (#6050)
  86. Several bugs related to array accesses in shaders have been fixed. For example, accessing an array of constants works correctly now, and array accesses using non-constant integers which would sometimes produce bad code should work properly in this release. (#2447, 2982, 4611, 4501)
  87. The shader compiler could sometimes output incorrect code for the "else" clause of an if statement with an integer not-equals comparison. This should be fixed now. (#5346)
  88. Some incorrect asserts in the shader compiler (for example when using gl_PointCoord) have been fixed. (#5858, 6209)
  89. Shader compiler expressions that use log10() should no longer produce an assert. (#6343)
  90. Error strings returned by shaderUtils are now properly terminated with a 0 character (previously they could contain some garbage characters at the end). (#6330)
  91.  
  92. SDK 2.08.10 [2012-11]
  93.  
  94. Bug Fixes:
  95. The system crashed if the power button is pressed while running some geometry shader demos. This happened because they called GX2RDestroyBuffer on a MEM1 surface during shutdown (ie, when in the background). The function touches MEM1, which is illegal when an app is in the background. To avoid this issue, please use GX2RDestroyBufferEx with the GX2R_OPTION_NO_TOUCH_DESTROY option. The demos were corrected. Please audit all software to ensure that GX2RDestroyBuffer is not called on MEM1 surfaces during shutdown. (#6143)
  96.  
  97. SDK 2.08.04 [2012-10]
  98.  
  99. Bug Fixes:
  100. Write-Gather corruption issue: We have implemented a lower-cost work-around for this issue. GX2 APIs should be closer in performance to what they were for SDK 2.08.02 and previous. While we are not 100% assured that the bug is prevented, the odds are greatly reduced. If you encounter a hang that results in a TCL command buffer dump, please send it to us so we can analyze it for signs of this problem. Work on this issue is continuing. (#4685, #5844)
  101.  
  102. SDK 2.08.03 [2012-10]
  103.  
  104. Bug Fixes:
  105. Write-Gather corruption issue: Under certain rare circumstances, GX2 commands written to a command buffer or display list could become corrupted by the CPU. When this happens, it typically causes a GPU hang, though graphical corruption is also possible. We have implemented a work-around to prevent any corruption by modifying the GX2 APIs. Unfortunately, this does result in some increase in CPU costs for most GX2 APIs. We are still working on this issue and will likely release a version with improved performance in the near future. (#4685, #5844)
  106. Warnings:
  107. Setting GX2SetSwapInterval to 0 should only be used for debugging. A swap interval of 0 is supported for immediate flipping. Use of this setting will cause tearing, and is also not compatible with PAL output. Do not set GX2SetSwapInterval to 0 in game submissions. (#6156)
  108.  
  109. SDK 2.08.02 [2012-10]
  110.  
  111. Shader Compiler Enhancements:
  112. The shader compiler now correctly propagates the flat interpolation keyword from an interface to its members.
  113. gshCompile now supports #include. This support is still somewhat preliminary, and may have issues. It is implemented as a pass before the rest of the preprocessor, so errors are reported with #error directives. Includes may be nested up to 24 deep. The support is only in gshCompile; other programs using shaderUtils must implement #include themselves.
  114.  
  115. SDK 2.08.00 [2012-09]
  116.  
  117. Known Issue:
  118. Even if you are doing Z-only rendering, it is still necessary to call GX2SetColorBuffer for render target 0 in order to make sure that the AA registers are set up properly. For Z-only rendering, the colorbuffer used here does not need to have a proper image buffer associated with it. We will find a better solution for this issue in a future SDK. (#3895)
  119. Bug Fixes:
  120. The Known Issue in SDK 2.07.03 is fixed. It is no longer necessary to do the mentioned GX2Invalidate when changing shader modes, since this call is now included in the relevant APIs. (#4336)
  121. The use of GX2InitSamplerFilterAdjust has been made workable by properly setting a related variable in the texture setup. (#4956)
  122. The high-level perf API assumed an incorrect number of counters for certain hardware units (CP, TD). This has been fixed. (#5456)
  123. When using an analog PAL (576i) TV, there was a bug in the 60/50 pulldown algorithm when using a swap interval > 1. This has been fixed. (#5478)
  124. Fixed issue in matrix library that caused the result to become nan when specifying a zero vector to PSVecMag. (#3263)
  125. Texture Converter Tools (TexConv2Page):
  126. Fixed issue with decoding of TGA files that could corrupt the final pixel. This only happened if additional data followed the image data. (#1696)
  127.  
  128. SDK 2.07.03 P2 [2012-09]
  129.  
  130. Enhancements:
  131. Added GX2R option flag GX2R_OPTION_NO_TOUCH_DESTROY to use with GX2RDestroyBufferEx when destroying MEM1 resources while in the background. This allows the resource to be destroyed without touching the memory that was allocated. (#5330)
  132.  
  133. SDK 2.07.03 P1 [2012-09]
  134.  
  135. Bug Fixes:
  136. Fixed an assert in shaderUtils which could incorrectly be triggered by linking three shaders which use the same uniform arrays. (#5051)
  137. Other:
  138. Reset some internal GX2 variables upon foreground release to help detect improper GX2 usage during background running. Such use should now result in an immediate exception (invalid access of 0x00000000). (#4882)
  139. The API name GX2SetRasterizerClipControlHalfZ is deprecated. Please use GX2SetRasterizerClipControlEx instead. (#3842)
  140.  
  141. SDK 2.07.03 [2012-08]
  142.  
  143. Known Issue:
  144. When changing the shader mode to either GX2_SHADER_MODE_UNIFORM_BLOCK or GX2_SHADER_MODE_GEOMETRY_SHADER, either by using GX2SetShaderMode or with GX2SetContextState, draws may not work right unless you invalidate the shaders using GX2Invalidate(GX2_INVALIDATE_SHADER, 0, 0xffffffff) (after changing the mode). This will be fixed in a future SDK. (#4336)
  145. Bug Fixes:
  146. Fixed the assert in GX2CopySurface that checks for scaling to check the size of the mips being copied rather than the base surface size. (#4160)
  147. Fixed the sample locations used in GX2 surface conversion operations (UBM internal lib) to match GX2's. (#4799)
  148. Other:
  149. The target returned by GX2GetLastFrame will always be in format GX2_SURFACE_FORMAT_TCS_R8_G8_B8_A8_SRGB. (#5171)
  150.  
  151. SDK 2.07.02 [2012-08]
  152.  
  153. Bug Fixes:
  154. Fixed an issue where a GX2 "wait" semaphore could bypass a GX2 "signal" semaphore that was sent just ahead of it, possibly causing a hang. (#2512)
  155. Fixed an issue where if you called the sequence GX2Init/GX2Shutdown/GX2Init, using a swap interval > 1 did not work. (#3415)
  156. Fixed a bug with texture tile apertures; they now work with non-zero swizzle values and non-zero slice values. (#3866, #4322)
  157. Fixed a bug where GPU hang dumps were corrupting memory (#4420)
  158. The valid gamma adjustment range (GX2SetTVGamma) has been limited to [0.7-1.3]. Please refer to the gamma documentation for more details. Fixed documentation concerning the valid gamma adjustment range (GX2SetTVGamma), which is [0.7-1.3]. (#4610)
  159. Fixed an issue where GX2 tile apertures <= 256 bytes did not work.
  160. GX2 Perf API Audit: (#2986)
  161. Various bug fixes for the high-level perf API.
  162. Added functions to decode perf counter and stat names.
  163. Modified low-level perf API to allow separation of counter configuration and results buffer.
  164. The low-level perf API now properly combines results for multi-unit counters and also provides access to all pipeline stats.
  165. Added low-level perf APIs to retrieve counter settings and size of result buffer.
  166. Enhancements:
  167. Added support for clip-space Z to be in [0...1] range instead of [-1...1] range. The new API GX2SetRasterizerClipControlHalfZ provides a way to choose the range, and new APIs to set the viewport should be used as well (GX2SetViewportHalfZ). (#3842)
  168. Added GX2GetLastFrame (#4167)
  169.  
  170. SDK 2.07.01 [2012-08]
  171.  
  172. Known Issue:
  173. The function GX2CalcSurfaceSizeAndAlignment will choose an incorrect tile mode for BCx compressed textures below the size of 128x64 pixels. This also affects the texture converter. For BCx textures below the size of 128x64 pixels, please specify a tile mode of GX2_TILE_MODE_1D_TILED_THIN1 instead of GX2_TILE_MODE_DEFAULT. This will be fixed in a future SDK.
  174. GX2 core choice:
  175. We discovered and fixed a bug that would occur if GX2 were initialized and run on a core other than the default core 1. Running GX2 on the non-default core is not well tested. If you do run GX2 on the non-default core, please let us know right away if you see any issues while switching to HBM or during game startup/shutdown. (#4527)
  176. GX2 Memory Management:
  177. All GX2-related memory alloc/free calls are now redirected through common vectors that can be set by calling GX2SetDefaultAllocator. This mainly affects GX2R and GX2 debugger/capture usage, as the base-level GX2 does no allocation. (#2395)
  178. Shader Compiler:
  179. If gshCompile now crashes due to an assert, a specific message will be printed on the terminal, instead of a generic compile failure. (#2131)
  180. Fixed a bug which could cause a shader compiler crash. The parser was failing to check that "varying in" geometry shader inputs were arrays with the correct number of entries, so illegal input was getting through to later stages of the compiler, where it caused an assertion and crash with unhelpful error message. (#1836)
  181. Fixed a bug which could cause interpolation types of varying uniform block members to be output in the wrong order (alphabetically instead of register order). (#2404)
  182. Fixed a shader compiler bug which caused the dFdy intrinsic to always return 0. (#3295)
  183. Fixed a gshCompile bug which could cause the clamp() intrinsic to produce incorrect results on integer arguments. (#3448)
  184. Other:
  185. GX2ConvertDepthBufferToTextureSurface should no longer assert when converting an AA depth buffer without HiZ to a texture. (#3840)
  186. Updated GX2SubmitsGPUCommandsPage (#4055)
  187.  
  188. SDK 2.06 [2012-06]
  189.  
  190. Enhancements:
  191. Added GX2_TOP_BOTTOM_CLOCK_CYCLES to be used with GX2SampleTopGPUCycle and GX2SampleBottomGPUCycle (#2612)
  192. Added functions to extract the shader GPRs and stack entires to shaderUtils. See Shader Utils. (#2603)
  193. Shader Compiler:
  194. Added performance warning to the shader compiler if there are more than 10 outputs from a vertex or geometry shader. In this case, code is necessary to work around a hardware bug that can cause performance to decrease. See Hardware bug due to too many GS or VS outputs (Not fixed). (#2970)
  195. gshCompile.exe now writes all warnings and errors to "stderr" rather than "stdout". (#1789)
  196. Bug Fixes:
  197. Fixed a problem that prevented GX2ResolveAAColorBuffer from working with the formats GX2_SURFACE_FORMAT_TCD_R16_UNORM and GX2_SURFACE_FORMAT_TCD_R32_FLOAT. (#2461)
  198. Shader Compiler:
  199. Fixed some crashes that could be caused by use or declaration of variables in the vertex shader that were not referred to in the pixel or geometry shaders. (#1930, 2445)
  200. Now enforces the GLSL CAFE extension requirement that the location binding of a uniform block must not be 0. Previously the compiler did not catch this error, which could cause incorrect operation in some circumstances. (#2100)
  201. Fixed a bug which could cause incorrect code to be generated when matrix elements are indexed by a variable. (#2561)
  202. Fixed a gshCompile crash related to uniform array initializers introduced inadvertently in SDK 2.04. (#3709)
  203. Other enhancements (#3158, #3180, #3010)
  204.  
  205. SDK 2.05 [2012-05]
  206.  
  207. Breaking change:
  208. In an effort to significantly reduce SDK size, pre-built texture and shaders assets have been removed from the SDK. To use SDK demos that require these assets, please rebuild the SDK. Demos do not have a build dependency on their assets, so users must call make in $CAFE_ROOT/system/src/demo/assets before running demos. (#2296)
  209. Features/Improvements:
  210. Added New APIs to allow user time stamps, GPU fences, and interrupt callback events. See GX2SubmitUserTimeStamp, GX2SetGPUFence, and GX2SetEventCallback. (#953)
  211. Added endian swap feature to GX2AllocateTilingApertureEx API. (#1713)
  212. Modified GX2InitColorBufferFTV API to always return the size and alignment of the surface that was originally requested, even if AA needed to be disabled due to the TV scan-mode requirements. (#2320)
  213. Changed the default GX2VerifyCallback to return file and line number instead of arbitrary ID. (#2437)
  214. Added DMAEGetLastSubmittedTimeStamp. (#2698)
  215. Bug fixes:
  216. Enabled RPLs to call GX2Init, not just RPXs. (#2349)
  217. Fixes various stability issues in ShaderUtils.dll, and updated Known Issues. (#1444, #1777, #1920, #2438, #2469, #2572, #2630, #2665)
  218. Fixed issue with GX2SetContextState not restoring all state. (#2613)
  219. Set HiZPtr to NULL in GX2InitDepthBuffer. (#2412)
  220. Fixed Perf APIs:
  221. Various stability issues in GX2 Performance Metrics. (#2491)
  222. Perf API now correctly frees memory at each new frame. (#2533)
  223. Certain GX2 shader-related functions were not being exported; this is fixed. (#2603)
  224. Documentation:
  225. Updated section Uniform Block Management about uniform block endian swap using GX2AllocateTilingApertureEx. (#1713)
  226. Updated section GX2SwizzlePage about surface swizzle for MEM1. (#2424)
  227. Added section Texture Mipmap Filtering about trilinear texture fetching performance. (#2536)
  228. Added section GX2SetDefaultState Settings to describe what GX2 state gets set by default. (#2347)
  229. Updated section GX2PerfTuningPage about tiled texture access pattern example. (#2330)
  230. Other enhancements (#1703, #2086, #2110, #2350, #2377, #2437, #2908, #3025)
  231.  
  232. SDK 2.04 [2012-04]
  233.  
  234. Breaking changes:
  235. Shader structures were modified. Please regenerate all shaders for this SDK. The GFD version number was also upgraded to reflect this change. (#2039)
  236. Surface Copy Changes Part 4 (final): Using GX2CopySurface to copy between two different formats or surface dimensions has been removed. Please use GX2UTSetAndCopySurface. See GX2CopySurfacePage (#1731)
  237. Removed GX2Log tool and functionality due to changes in RPL infrastructure. (#2108, #2385)
  238. Features/Improvements:
  239. Added first milestone of GPU Debugger: See pm4ParsePage, GX2UT Capture APIs, and GX2 Capture APIs. (#2205)
  240. Added new Low-level performance APIs. See GX2PerfCounterPage (#2095)
  241. TexUtils (#1601):
  242. Added format conversion from R32_G32_B32_A32_FLOAT and R16_G16_B16_A16 to R16_FLOAT, R32_FLOAT, R16_G16_FLOAT and R32_G32_FLOAT.
  243. Added format conversion from R11_G11_B10_FLOAT to R8_G8_B8_A8_UNORM.
  244. Added Clear Surface APIs (source provided). (#2258)
  245. Bug fixes:
  246. Added GPU hardware bug work-around (AMD #9722) that caused a GPU hang with user-provided shaders. (#2039)
  247. Fixed GX2CPUTimeToGPUTime & GX2CPUTimeToGPUTime have been fixed for CAT-DEV MP. (#2462)
  248. Fixed stack stomp in SDK-source matrix assembly functions: ASM_MTXConcat, ASM_MTXConcatArray, _ASM_MTXRotAxisRadInternal, ASM_MTXQuat (#2407)
  249. ShaderUtils:
  250. Fixed uniform block member size missmatch issue that caused a compiler crash. (#2034)
  251. Fixed mismatch in compiler-assigned sampler id's in function declarations and function definitions that caused a comiler crash. (#2081)
  252. Added symbol for uniform arrays (the whole array itself) in addition to outputting the symbols for the individual elements. (#2109)
  253. Fixed bug where certain uniform using if/else and loops the uniform returned > 1024 (loop register) and showed unexpected behavior. (#2171)
  254. Fixed GX2_NUM_SPI_VS_OUT_ID_REGISTERS overrun in GX2SetVertexShader with a specific shader (runtime size bug). (#2216)
  255. Fixed GX2GetColorControlReg to return correct value for pColorBufferEnable. (#2270)
  256. GX2R:
  257. Fixed a bug where runtime diagnostic tracking was costing time in GX2RUnlockBuffer even when disabled with GX2RSetDebugOptions with GX2R_DEBUG_NONE, in DEBUG only.
  258. Optimizations resource tracking and guard band checks so runtime overhead is greatly reduced even when all debug checks are enabled.
  259. Documentation:
  260. Added information about known hardware bugs (Hardware Bug #9450 (Not fixed), Hardware Bug #10336 (Not fixed)) (#432)
  261. Added warning: Beware of Scissor Stomp (#2015)
  262. Added bandwidth notes to GX2SurfaceFormat comments (#1948)
  263. Added section: SRGB Fetch / Write mechanism (#2337)
  264. Updated section GX2 Stream-Out Query about not calling GX2SaveStreamOutContext after every draw (#2273)
  265. Added section: GPU-hang Error Messages
  266. Added note about stack overflow issues with shaderUtils.ddl. See Known Issues. (#2366)
  267. Misc:
  268. The size output by GX2CalcTVSize for TV render modes smaller than GX2_TV_RENDER_720 is now forced to include quad scan-out buffers. This is to account for the space needed when 60/50 pull-down mode is required. See the GX2 Display APIs page for more details. (#343)
  269. Other enhancements (#1555, #1580, #2072, #2074, #2114, #2125, #2130, #2141, #2165, #2177, #2195, #2301, #2359, #2405, #2419)
  270.  
  271. SDK 2.04 [2012-04]
  272.  
  273. Features:
  274. Important Required Change: Finalized scan buffer copy. In order to support every possible TV scan format, it is now required to set up the TV scan buffer prior to setting up the "final" TV render target. The final TV render target is the one which will be copied to the scan buffer. It must be set up using GX2InitColorBufferFTV. Note that scan buffer requirements may vary depending upon TV scan format. It is required to call GX2CalcTVSize to allocate the proper amount of space. Please refer to GX2 Display APIs for more details. For an example implementation, see demoGfx.c, in sections labeled "Setup Scan Buffers" and "Setup render buffer". (#1848)
  275. Added support for DRC 30hz update. Single DRC 30hz mode is selected with a new enum value for GX2DRCMode when calling GX2SetDRCBuffer. The display flipping logic accommodates this automatically (see docs on GX2 Multiple Display Output). (#1847, #2061)
  276. Added GX2SetVerifyLevel and GX2VerifyCallback. These functions can be used with the debug GX2 library to control the types of warnings and errors generated at runtime. Also it installs a callback that is invoked whenever a warning or error is encountered by the GX2 API (only in debug builds). (#2071)
  277. Added support for Addaptive Tesselation. See demo/gx2/tessellate/tessellateAdaptive (#1614)
  278. Added ability to render multiple contexts in the demo library. See DEMOGfxAddInstance, DEMOGfxDeleteInstance, DEMOGfxSetInstance, DEMOGfxGetInstance. Similar functions provided for font and DRC modules. (#2062)
  279. Added ability to generate fetch shaders on the PC using shaderUtils.dll. (#2010)
  280. Added the function GX2IsResolveSupported to check against the list of formats that are supported by the fixed function resolve path. In GX2ResolveAAColorBuffer, call the new function and assert if the MSAA buffer format is not support for fixed-function resolves. (#1527)
  281. Surface Copy Changes Part 3: See GX2CopySurfacePage (#1731):
  282. Added Copy Surface functions to GX2UT lib (source provided): GX2UTCopySurface, GX2UTCopySurfaceRect, GX2UTSetCopyState, GX2UTSetAndCopySurfaceRect, GX2UTSetAndCopySurface.
  283. Changed demos that used deprecated gx2CopySurface* functionality to call GX2UTCopySurface* instead.
  284. Please update all applications to use GX2UTCopySurface* if deprecated messages appear in the debug output.
  285. Made numerous changes to src/demo/gx2/copy/copySurfaceRect
  286. Warning: Deprecated usage of GX2CopySurface will be removed in SDK 2.04. Please contact your support team if you need an extension.
  287. Bug fixes:
  288. Fixed ASM_MTXConcat to save the f14 halves (PS1) of non-volatile registers with propriety. This solves the issue that f14 halves is broken occasionally when returns from the function. (#2059)
  289. Fixed support for sampler2DArrayShadow in shaderUtils. (#1442)
  290. Fixed support for samplerCubeArray. (#2147)
  291. GX2ConvertDepthBufferToTextureSurface works with GX2_SURFACE_FORMAT_T_X24_G8_UINT destination surface. (#2032)
  292. Fixed GX2ClearColor to set the correct gamma bits for UBM. This makes the visually of the clear color on SRGB buffer brightly than before. (#2014)
  293. Fixed DEMOTestCapture hard-code to SRGB8. Now it's dynamically controlled by current Color Buffer format to set in DEMOGfxInit. (#1938)
  294. Enabled gshCompile to support UTF-8 with BOM. (#1752)
  295. Fixed bug in TexConv2 when it re-convert binary from gtx to dds with 64bit. (#2127)
  296. Fixed bug in gshCompile when it is used with -align option. It didn't add correct padding for GS copy shader. (#2167)
  297. Enable flat shading mode. developer can use flat shading by enabling "flat" grammar on GLSL . (#2119)
  298. Added runtime GPU BC1 generator sample to src/demo/gx2/texture/runtimeBC1gen. (#1816)
  299. Documentation:
  300. Updated GX2DisplayPage with scan buffer copy information. (#1848)
  301. Updated GX2HardwareIssuesPage to reflect which devkits fix which issues (#2035)
  302. Added note about performance cost of GX2SetContextState to GX2 Performance Suggestions. (#1985)
  303. Corrected GX2AttribStream. (#2069)
  304. Updated GX2CopySurfacePage. (#1731):
  305. GX2R
  306. In debug builds, GX2RUnlockBuffer can be slow due to calculations for debug checks even when GX2R_DEBUG_NONE is specified. This is fixed in the next release.
  307. In debug builds, GX2R requires around 64 bytes per buffer for resource tracking information (plus additional memory for strings if you use GX2RSetBufferName). This memory is obtained from the system allocator via MEMAllocFromDefaultHeapEx(). The game should avoid preallocating the entire system heap in debug builds without leaving any slack. Future releases will support using the GX2R allocator callback for this debug info. In release builds, GX2R requires no additional memory, and GX2RSetBufferName is a nop.
  308. GX2R's detection of CPU-GPU resource contention is not performed on resources set inside a display list currently. This will be added in a future release.
  309. A FAQ section has been added to the GX2ResourceManagementPage.
  310. Misc:
  311. Moved all gx2 demos from "test" to "demo" directory. (#2013)
  312. Minor enhancements (#2088, #2078, #2069, #2041, #2038, #2005, #1942, #1918)
  313.  
  314. SDK 2.02 [2012-02]
  315.  
  316. Breaking Changes:
  317. Policy has been defined for scan buffer resolutions. For example, if the TV output mode is 480i or 576i, then the scan buffer resolution cannot be higher than 1280x720. If the application uses an AA color buffer as its final render target (to be copied to the scan buffer), then its resolution must match the scan buffer resolution. The full list of rules are listed on the GX2DisplayPage.
  318. The formula used for SNORM conversion for both attributes & surfaces is now f=max(c/((2^(b-1))-1), -1.0) [f:output c:input b:# of bits for c] Previously, attributes and textures used this formula instead: f=(2c-1)/((2^b)-1). (#1737)
  319. Surface Copy Changes Part 2: See GX2CopySurfacePage (#1731):
  320. Added support in GX2CopySurfaceEx to support copying of many sub-regions (rectangles) in a single call. See test/gx2/copy/gx2CopySurfaceExTest & test/gx2/copy/gx2CopySurfaceExTestBC1. (#1587)
  321. If the pixel size is 32-bits, copy using GX2_SURFACE_FORMAT_TCS_R8_G8_B8_A8_UNORM format. This gives a noticeable performance boost for some formats.
  322. If the requested pixel format is not valid as both a texture and color buffer, use a comparable format that is valid as both a texture and color based on the pixel size. (BC formats were already handled with an earlier change.)
  323. NV12 copying is not currently supported (and never was).
  324. Added an assert in in GX2ConvertDepthBufferToTextureSurface to check that the source and destination buffers have the same number of MSAA samples.
  325. Features:
  326. GX2R APIs Part 2: GX2R provides formalized support for GPU resources via the GX2RBuffer struct, with the aim of providing increased reliability, new runtime diagnostics, and facilitating future GPU debug and performance tools. Now supports shader programs, stream out, and surfaces. Improved diagnostics for runtime errors such as modifying or deleting resources in use on the GPU. Your feedback is welcomed to help refine the final release. See GX2ResourceManagementPage and Resource Management Layer API list (#1537)
  327. Several demos have been ported to GX2R as examples. For a list please see GX2DemoPage. (#1912)
  328. Support for Adaptive Tessellation See - GX2DrawAdaptive, GX2_TESSELLATION_MODE_ADAPTIVE. test/gx2/tessellate/tessellateTypes/tessellateTypes.cpp (#1614)
  329. Added support in texUtils for mipmap Generation for GX2_SURFACE_DIM_2D_ARRAY. (#1917)
  330. Added GPU command dump when GPU hang is detected. (#1954)
  331. Supported TexUtils converts from R32G32B32A32 to R11G11B10 and R10G10B10A2. (#1601)
  332. Bug fixes:
  333. Fixed critical command buffer related bugs that were introduced in SDK 2.0. These fixes were released in a GX2/TCL patch to SDK 2.0. (#1974, #1989)
  334. Fixed bug in a calculation for time in command buffer submission process. It would assert "Warning: GX2 timed out allocating space in the command buffer." (#1796)
  335. Fixed shaderUtils to output the correct size for Uniform Blocks. (#1962)
  336. Fixed gfd to use proper alignment macro for shader pointer with -oh option. (#1997)
  337. Minor enhancements (#1435, #1721, #1723, #1830, #1879, #1891, #1937, #1986)
  338.  
  339. SDK 2.0 [2011-12]
  340.  
  341. Breaking Changes:
  342. Removed the following deprecated APIs (See SDK 1.9 Release Notes): (#1739)
  343. GX2TempConvertColorSurfaceToDepthBuffer. See GX2 AA and HiZ Conversion APIs.
  344. GX2BeginOcclusionQuery, GX2EndOcclusionQuery, GX2BeginConditionalRender, GX2EndConditionalRender, GX2GetOcclusionQueryReady, GX2GetOcclusionQueryZPassCount. Please use the new Query APIs instead.
  345. GX2SetRasterizeControl and the associated Reg functions. Please use GX2SetPolygonControlReg.
  346. GX2TempCopyDisplayList. Please use GX2CopyDisplayList.
  347. GX2TempSetDBRenderControl.
  348. GFD was modified, so you must re-compile all shaders and textures.
  349. Surface Copy Changes Part 1: See GX2CopySurfacePage (#1731):
  350. Added support in GX2CopySurface to accept BC/DXT destination buffers (#1615)
  351. Added sample demonstrating how to copy surface rects + AA + format conversion (#1714)
  352. GX2CopySurface support for stretching and format conversion has been deprecated and will be completely removed in the next SDK. In this SDK a warning message will be printed. See GX2CopySurfacePage for alternatives/solutions.
  353. Features:
  354. GX2R APIs: Provides formalized support for GPU resources via the GX2RBuffer struct, with the aim of providing increased reliability, new runtime diagnostics, and facilitating future GPU debug and performance tools. These APIs are a preview and may change before final release. Your feedback is welcomed to help refine the final release. See GX2ResourceManagementPage and Resource Management Layer API list (#1537)
  355. Utility APIs: A new API sitting above GX2+GX2R. Currently, it is mostly simple ease-of-use wrappers, however future releases with provide more sophisticated helper functions which can be used stand-alone, independent of the DEMO framework. It is open source.
  356. Added GX2GetSurfaceSwizzle (#1683)
  357. Added GX2GetCurrentDisplayList (#1787)
  358. Added a warning if too many GPU interrupts are firing per frame. See GX2SetInterruptCountLimit (#1829)
  359. Added a simple stream-out demo: test/gx2/streamout/collisionSO/ (#1665)
  360. Added document about Texture Fetch 4 (Texture Fetch4) and demo (test/gx2/shading/PCFShadow). Fetch4 allows the fetching of four unfiltered neighboring texels (2x2 texel block) in a single texture instruction. It will have a great performance advantage in case of sampling a single channel texture in many times (e.g PCF shadowing). (#1549)
  361. Bug fixes:
  362. The DEMO framework was waiting for the GPU to be idle before each frame. A minor change in DEMOGfxBeforeRender allows the CPU to run ahead of the GPU. You should make sure that your own game engine is pipelining the two as expected. (#1793)
  363. Fixed a deadlock issue when using GPU wait semaphore in DMAE (#1820)
  364. GX2 can now be re-initialized on a different core with GX2Shutdown and GX2Init (#1724)
  365. Fixed all known bugs related to using GX2CopySurface to copy 2D array and 3D surfaces with mip-maps, tiling, and swizzles. Fixed various bugs related to copying slices/mips from 3D surfaces. Disabled linear filtering which prevents GX2CopySurface from blending two slices together. Fixed corruption when copying "THICK" tiled surfaces (ie. GX2_TILE_MODE_2D_TILED_THICK) which is mainly used with 3D surfaces. (#1283)
  366. GX2_DEBUG_MODE_FLUSH_PER_DRAW no longer causes an assert when display lists are being created. (#1760)
  367. Fixed warning #228 when some GX2 headers are compiled with examplemake by adding extern "C" in gx2Uda.h.
  368. Performance:
  369. Added testware and documentation (GX2PerfCounterPage) for new Performance API. (#1607)
  370. demo/gx2/garden/shallowWater
  371. test/gx2/perf/benchmark
  372. Added documentation and GX2CopyEndianSwap on how to swap Uniform Blocks most efficiently: Uniform Block Management (#1713)
  373. Enhanced Performance API (Perf):
  374. Added switch to disable frame coherence check option
  375. Added const correctness
  376. Added get functions for the set functions
  377. Fixed several bugs
  378. Tex Utils:
  379. Added support for GX2_SURFACE_FORMAT_TCS_R8_G8_B8_A8_SRGB, GX2_SURFACE_FORMAT_T_BC1_SRGB, GX2_SURFACE_FORMAT_T_BC2_SRGB and GX2_SURFACE_FORMAT_T_BC3_SRGB format. (#1675)
  380. Bug fix: Support for FourCC DDS images. (#1751)
  381. Bug fix: Support for converting DDS when setting DDSD_MIPMAPCOUNT flag and dwMipMapCount=0.
  382. Bug fix: TexUtils lost mipmap images with 3D texture slices (#855)
  383. Bug fix: TexUtils failed to convert mipmap images in cubemap and 3D texture in case of BC formats. It ignored mip offsets in each faces in the case. (#1132)
  384. Bug fix: TexUtils bug in TC2CombineAsMips to handle mips down to 1x1 for non-square textures. It did not care about minimum size of mips. (#1901)
  385. Shader Utils:
  386. Added support for explicit hardware location binding for Uniform Blocks: Explicit Hardware Location Binding (#1065)
  387. Bug fix: Uniform Block's member offset is different when member is array. (#1573)
  388. GFD: (#1757, 1758)
  389. Added GFDGetAlignMode API to know align mode setting in the file.
  390. Added GFDAlignMode value in the GFDHeader for GFDGetAlignMode API.
  391. Update PC side GFDWriteFileHeader API to add align mode into the header.
  392. Updated the order of gfd block types enum.
  393. Updated the major version of GFDBlockHeader and minor version of GFDHeader.
  394. Fixed some GFD functions to return NULL when there isn't data section in the file.
  395. Deprecated APIs:
  396. All deprecated APIs will be removed in the next SDK! For a complete listing, see Deprecated.
  397. Deprecated previous performance counter APIs. Please use the new Perf APIs. This deprecation was delayed one SDK because of bug fixes.
  398. Documentation:
  399. Added GX2ResourceManagementPage (#1537)
  400. Updated DMAEPage (#1781)
  401. Updated GX2ManagementPage (#1781)
  402. Added Uniform Block Management
  403. Minor fixes (#584, #1470, #1506, #1733, #1831, #1893)
  404. Known Issue
  405. Part of the SDK itself, root.rpx, is using GX2CopySurface to do stretching and triggering a warning messages since this behavior is now deprecated. This will be fixed in the next SDK and can safely be ignored.
  406.  
  407. SDK 1.9.1 [2011-11]
  408.  
  409. Bug fixes:
  410. Fixed warning in gx2Misc.h built on visual studio. (#1766)
  411.  
  412. SDK 1.9 [2011-10]
  413.  
  414. Breaking Changes:
  415. Removed GPU7 endian bug work-arounds. See GX2EndianSwapWorkAroundTransitionSect. (#1293)
  416. Removed temporary tessellation functions: GX2TempSetTessellationType, GX2TempSetTessellationFactor, GX2TempInitFetchShader, GX2TempSetTessellate, GX2TempDrawIndexedEx, GX2TempDrawIndexedImmediateEx, GX2TempDrawEx. Please use the new Tessellation APIs instead.
  417. Removed GX2_SURFACE_FORMAT_T_R24_UNORM_G8_UINT format. Please use GX2_SURFACE_FORMAT_T_R24_UNORM_X8 and GX2_SURFACE_FORMAT_T_X24_G8_UINT formats for reading depth buffer and stencil buffer as texture in separate format types. (#1352)
  418. Removed GX2_CONTEXT_STATE_SIZE. Please use sizeof(GX2ContextState). (#1602)
  419. Renamed GX2TempConvertDepthBufferToColorSurface to GX2ConvertDepthBufferToTextureSurface. See GX2 AA and HiZ Conversion APIs. (#726)
  420. Deprecated APIs:
  421. All deprecated APIs will be removed in the next SDK! For a complete listing, see Deprecated.
  422. Deprecated GX2TempConvertColorSurfaceToDepthBuffer. See GX2 AA and HiZ Conversion APIs. (#726)
  423. Deprecated previous performance counter APIs. Please use the new Perf APIs. However, note that this API is subject to change. (#1042)
  424. Deprecated previous Query APIs: GX2BeginOcclusionQuery, GX2EndOcclusionQuery, GX2BeginConditionalRender, GX2EndConditionalRender, GX2GetOcclusionQueryReady, GX2GetOcclusionQueryZPassCount. Please use the new Query APIs instead.
  425. Deprecated GX2SetRasterizeControl and the associated Reg functions. Please use GX2SetPolygonControlReg. (#1624)
  426. Deprecated GX2TempSetDBRenderControl.
  427. Deprecated GX2TempCopyDisplayList.
  428. Performance Enhancements:
  429. Added preliminary version of runtime performance counter API: (#1042)
  430. Documentation and demos will be provide in the next SDK.
  431. This API is subject to change.
  432. See API the Perf reference manual.
  433. Fixed bug that was causing GPU7 to run half rate when rendering to float formats with 16 bits or less per component ( GX2_SURFACE_FORMAT_TC_R16_G16_FLOAT, GX2_SURFACE_FORMAT_TC_R11_G11_B10_FLOAT, etc.) (#1421)
  434. Optimized multithread usage of shaderUtils.dll (#1505)
  435. Bug fixes:
  436. Fixed incorrect GPU7 performance counters. (#1535)
  437. Fixed bug where GX2CopySurface didn't work with slices greater than zero (#1283)
  438. We think we may have fixed the issue, but we are still investigating the corner cases.
  439. Fixed shaderUtils to resolve strange flickering occurs on a certain shader. (#1637)
  440. Fixed GX2Invalidate to invalidate none 256 byte aligned data properly. (#1679)
  441. Fixed bug where GX2SetDRCConnectCallback unconditionally invokes callback, even when NULL(#1612)
  442. Fixed bug where the system fails to set HDMI output depends on TV status(#890)
  443. This bug is preventable by specifying AV output port through devmenu. Please refer to the system settings man page for more detail.
  444. Fixed memory corruption in the GSH2CompileProgram function (#1697)
  445. Enhancements:
  446. Added preliminary foreground switching functionality (#1550)
  447. Added initial GX2StreamOutGroup API (#876)
  448. Added official GPU7 DMA Engine support. See DMAE. (#1252)
  449. Added support for GX2_ATTRIB_FORMAT_10_10_10_2_SNORM, GX2_ATTRIB_FORMAT_10_10_10_2_SINT, GX2_SURFACE_FORMAT_TC_R10_G10_B10_A2_SNORM, GX2_SURFACE_FORMAT_TC_R10_G10_B10_A2_SINT (#1526)
  450. Added Shader Compiler debug output (gshCompile.exe -d option) (#1140)
  451. Added official Tessellation support. See Tessellation. (#1381)
  452. Added ASSERTs when non-DL GX2 APIs are called within Display List (#1592)
  453. Added "Japanese garden" demos. See GX2GardenDemoPage. (#1414)
  454. Minor fixes (#350, #652, #1235, #1501, #1502, #1522 #1544, #1558, #1576, #1602, #1605, #1611)
  455.  
  456. SDK 1.8 (includes SDK 1.7.1) [2011-09]
  457.  
  458. Breaking Changes:
  459. The GPU7 endian bug fix is now enabled by default. CatDev V2 is not supported. Please see GX2EndianSwapWorkAroundTransitionSect for more details. (#1293)
  460. The DEMO Font APIs have their own context state now. Added DEMOFontSetContextState, which needs to be called before drawing fonts. This context is automatically configured in DEMOFontInit. Added a convenience function to set default demo gfx context DEMOGfxSetContextState, which should be called after drawing fonts to restored the application's state. The DEMO APIs demonstrate how we expect applications to use Context State. See the GX2ContextStateShadowingPage for more information. (#692)
  461. GX2Init now gets argc/argv automatically. GX2_INIT_ATTRIB_ARGC and GX2_INIT_ATTRIB_ARGV have been removed.
  462. Updated gx2Shader.h structures for consistency. All shader files must be rebuilt. (#1434)
  463. GX2InitContextState was renamed to GX2SetupContextState. It was previously CPU-only. Now it outputs GPU commands. See GX2SubmitsGPUCommandsPage.
  464. Moved the Infinitely Fast Hardware feature to a profile mode (GX2ProfileMode) rather than a debug mode. The profile mode can only be setup via the command line or by GX2 init attributes. (#839)
  465. Performance Enhancements:
  466. All of MEM1 is now available for graphics use. Previously, about 2MB was reserved for COS. (#1441)
  467. Improved performance of the effective to physical address translation which was causing significant slowdowns when using the GPU7 endian bug fix patch. (#1313)
  468. Added initial support for GX2ProfileMode and GX2TossStage. (#839)
  469. Updated MAT library to use assembly versions until GHS paired single optimizations are completed. (#1300)
  470. Added GX2SetSurfaceSwizzle and documentation on swizzling textures. See GX2SwizzlePage. (#1170)
  471. Bug Fixes:
  472. Fixed potential issue with occlusion query and predicated rendering. Under certain circumstances the query test would come out wrong. (#1358)
  473. Fixed GX2CopySurface to work properly when srcMip and dstMip are non-zero. (#1283)
  474. Fixed the way initial uniform values are stored in the shader structures. The shader compiler now properly fills in the structure, they are properly stored and read out with GFD, and the GX2SetVertexUniformRegDefaults and GX2SetPixelUniformRegDefaults APIs now set them. (#1353, #1369)
  475. Fixed corruption of gl_FragCoord and gl_FrontFacing variables (#1410)
  476. Fixed corruption of depth buffer when clearing HiZ stencil (GX2ClearDepthStencilEx). (#1291)
  477. Fixed corruption when using GX2CopySurface to copy a BC1 surface (#1081)
  478. Enhancements:
  479. Added GX2GetSurfaceMipPitch. (#1155)
  480. Added asserts when a gx2 command is issued in a sub-core outside of a display list. (#1201)
  481. Added various asserts to verify buffer alignments. (#1386)
  482. Consolidated various demos. See GX2DemoPage for a description of current demos. (#1224)
  483. Added an expandable heap allocator for MEM1 via DEMOGfxAllocMEM1 and DEMOGfxFreeMEM1 (#1501)
  484. Added MAT34Transpose. (#1396)
  485. Updated TexUtils DLL to be re-entrant and thread-safe. (#1388)
  486. Updated ShaderUtils DLL to be thread-safe. (#1505)
  487. Enabled DEMOGfxInit to take in Z-buffer formats (#1418)
  488. Removed requirement for all built-in inputs and outputs to be re-declared in shaders when using the Independent Shaders feature. (#1365)
  489. GX2ClearDepthStencilEx can now set depth and stencil values (GX2SetClearDepthStencil does not need to be called). (#1066)
  490. Added adjacency primitive types: GX2_PRIMITIVE_LINES_ADJACENCY GX2_PRIMITIVE_LINE_STRIP_ADJACENCY GX2_PRIMITIVE_TRIANGLES_ADJACENCY GX2_PRIMITIVE_TRIANGLE_STRIP_ADJACENCY. (#1398)
  491. Added GX2GetDisplayListWriteStatus (#1457)
  492. Documentation:
  493. Added GX2ContextStateShadowingPage.
  494. Added GX2DisablesStateShadowingPage.
  495. Added GX2SubmitsGPUCommandsPage.
  496. Added GX2SwizzlePage.
  497. Updated GX2PerfTuningPage.
  498. Known Issue
  499. Some Geometry Shader Demos will hang if they are not run in 2 Quad Pipe mode For more information, please see Unprotected FIFO Issue (Fixed with CAT-DEV V4).
  500.  
  501. SDK 1.7 [2011-07-15]
  502.  
  503. Breaking Change: If you are using the GPU7 endian bug fix version of the SDK, then please see GX2EndianSwapWorkAroundTransitionSect (#572)
  504. Breaking Change: Changed GX2Init input parameters from (argc, argv) to a list of [argument, value] pairs. For an example, see the source to DEMOGfxInit (#911)
  505. DRC-related Changes:
  506. Breaking Change: Renamed all *MOV* definitions to *DRC*. See Display (#1220)
  507. Fixed GX2GetSystemDRCMode to return correct number of DRCs.
  508. Added new API to register the callback function which notifies when a DRC is connected GX2SetDRCConnectCallback
  509. Performance Enhancements:
  510. Increased vertex reuse buffer from 6 to 14 vertices, which should help increase vertex performance for primitives that repeat the same vertex within this limit. This was a software bug that wasn't taking advantage of the hardware's maximum value of 14. (#1125)
  511. Fixed the guard-band setup in GX2SetViewport to reduce clipping. A clipped primitive costs 24x-170x more than a non-clipped one (depending upon the number of clipping planes crossed). (#1129)
  512. Modified DEMOGFDReadVertexShader, DEMOGFDReadPixelShader, and DEMOGFDReadGeometryShader to allocate the GSH header portion to the default system heap instead of GX2TempAllocMEM2. Since GX2TempAlloc allocates uncached memory, the shader setup GX2 calls took longer to process. Please check your applications for a similar bug. Since shader setup calls are very common, this could significantly help improve performance. (#1112)
  513. Added documentation for newly discovered GPU7 hardware bugs:
  514. Quad Pipe Synchronization Issue (Fixed with CAT-DEV V4) (#970)
  515. Unprotected FIFO Issue (Fixed with CAT-DEV V4) (#871)
  516. Shader Compiler Tools (gshCompilePage):
  517. Breaking Change: Removed legacy gshConvert.exe and aticl.exe from SDK, and replaced with gshCompile.exe, which is based on a new Shader Utility Library that can be integrated into other PC applications. See gshCompilePage (#907)
  518. Added GLSL Cafe extension for Explicit Hardware Location Binding GX2GLSLExtPage (#604)
  519. Removed duplicated program data sections from GFD_BLOCK_TYPE_GX2_*SH_HEADER blocks in GSH files. (#907)
  520. Added support for for independent vertex and pixel shader compilation. Previously, every pixel and vertex shader pair needed to be compiled together, which creates requires (up to) V x P compilations. This feature allows for V + P compilations given that certain requirements are met. See Independent Shaders for more details. (#952, #975)
  521. Added a feature to append a shader to an existing GSH file Command Line Arguments (#678, #921)
  522. Fixed register mismatch when using gl_FragCoord (#749, #943)
  523. Fixed inconsistent shader mode settings when compiling geometry shaders (#1100)
  524. Fixed shader loops with greater than 255 iterations (#1116)
  525. Fixed temp loop values. Previously, loop temporary values needed to be decremented (--i vs. ++i). This fix includes slightly better performance for loops in general. (#512)
  526. Fixed error with size calculation of Uniform Blocks containing an array. (#1188)
  527. Removed code that initializes the arrays in the GLSL compiler. This eliminates unnecessary register writes, which increases performance. The GLSL compiler will no longer support reading a temp value before it is written. (#1137)
  528. Added a "-oh" option that generates a header file instead of a GSH file, which can be used to debug shader output in a programmer-readable format, or to compile shaders into an application for special purposes (#919, #888)
  529. Turned GFD into a DLL for convenience. (#1151)
  530. Moved file locations File Locations (#1050)
  531. Texture Converter Tools (TexConv2Page):
  532. Added function in TC2ConvertOptions to provide weights for each RGB channel when converting BC1/2/3 format (#1044)
  533. Fixed mipmap support for GX2_SURFACE_FORMAT_TC_R8_UNORM GX2_SURFACE_FORMAT_TC_R8_G8_UNORM (#997)
  534. Fixed bug in TexUtils::TC2ConvertSurfaceFormat when using mipmap level of 2. (#1028)
  535. Fixed unintended swap of R & G when converting GX2_SURFACE_FORMAT_TC_R8_G8_UNORM into GX2_SURFACE_FORMAT_TCS_R8_G8_B8_A8_UNORM via TexUtils::TC2ConvertSurfaceFormat (#1087)
  536. Moved file locations File Locations (#1050)
  537. Added a feature to append a texture to an existing GTX file Command Line Arguments
  538. GX2 Robustness:
  539. Fixed a bug that could hang GX2 if calling GX2WaitForFlip within a few microseconds of the vsync. Now this function will no longer hang, but if called within the same window it will sleep until the next vsync. For a recommendation of how to synchronize with vsync, please see GX2 Display Synchronization. (#1001)
  540. Added functionality to print out GPU7 status registers if a GPU hang is detected. See GX2PrintGPUStatus, GX2SetGPUTimeout, and GX2GetGPUTimeout (#1052)
  541. Updated Performance Counters: (#1042, #1055)
  542. Fixed counts to include all instances of a block
  543. Added GX2TempGetPerfMetricType
  544. Removed GX2_PERF_F32_Z_UNIT_PIXEL_OPS_MEM_STALLS until it can be fixed.
  545. Added many perf metrics GX2PerfMetric
  546. Fixed high level counters GX2_PERF_U64_GS_INVOCATIONS, GX2_PERF_U64_GS_PRIMITIVES, GX2_PERF_F32_GS_ALU_BUSY, GX2_PERF_F32_PS_ALU_BUSY, GX2_PERF_F32_TEX_CACHE_STALLED, GX2_PERF_F32_TEX_MISS_RATE, GX2_PERF_F32_HIZ_REJECT, GX2_PERF_F32_HIZ_REJECT, GX2_PERF_U64_PA_INPUT_PRIM, GX2_PERF_U64_PRIMITIVES_IN, GX2_PERF_U64_IA_VERTICES, GX2_PERF_U64_IA_PRIMITIVES, GX2_PERF_U64_VS_INVOCATIONS, GX2_PERF_U64_GS_INVOCATIONS
  547. Fixed issues collecting TCP and TD counters. This impacted both high level and low level counters.
  548. Added explanations for each metric (GX2PerfMetric)
  549. Fixed various bugs in the performance APIs
  550. Update matrix library:
  551. Fixed build errors in mat.h (#1110)
  552. Fixed a calculation bug in MAT34RotAxisRad, MAT44RotAxisRad. (#1178)
  553. Updated Matrix library to use paired-single load/store APIs. For a good example, see the source code of MAT34Concat. (#803)
  554. Moved MAT structure defines from matVec.h to mtxGeoTypes.h. (#1153)
  555. Added Vec2 define in mtxGeoTypes.h and removed Vec2 define in kpad.h and VPADVec2 define in vpadTypes.h. (#1153)
  556. Added support for compressed format surfaces as a source for GX2CopySurface (#1158)
  557. Added a new structure-based interface to the render state APIs. See Register (#697)
  558. Removed GPU7 commands from GX2InitFetchShader, which makes it safe to call outside of a GX2 context, from any core or at any time. (#1040)
  559. Fixed graphics-related compiler errors when including cafe.h in Windows builds (#895)
  560. Added asserts and some documentation to catch MSAA differences between depth and color buffers in GX2ClearBuffers. (#1014)
  561. Removed unnecessary GX2Flush in GX2SetClearDepthStencil so the function can be called in a display list (#1127)
  562.  
  563. SDK 1.6 [2011-05-04]
  564.  
  565. Updated Shader Compiler, aticl.exe, to output .gsh files directly. In previous SDKs, gshConvert.exe would call aticl.exe to compile a shader into an ELF file that gshConvert.exe would then parse into a .gsh shader file. In SDK 1.6, aticl.exe generates .gsh files directly. (#428)
  566. Warning: gshConvert.exe will be deprecated in the next SDK!
  567. Added Preliminary Geometry Shader Support (See GX2ShadersPage). Demos can be found at system/src/test/gx2/gs.
  568. Fixed a critical bug where GX2 was allocating too large of a buffer for the GPU7 interrupt handler which could cause the GPU7 to start reading garbage data. This bug was causing instability in the graphics system in some cases. (#869)
  569. Fixed a critical bug where GX2CalcFetchShaderSize was not computed correctly. This could result in the fetch shader buffer being too small and either the CPU overwriting other data or the GPU reading incorrect data.
  570. Fixed a critical bug where the write pointer to a ring buffer that tracks interrupts between the CPU and GPU became out of sync between the two. This would cause the vsync interrupt to get lost, and applications would hang in GX2WaitForVsync. (#920)
  571. Converted texUtils from a static library to a DLL to help support Visual Studio 2010 and 2008 (see TexConv2Page.) (#842)
  572. Updated documentation about Endianess & Alignment for Each Buffer Type. (#835, #754)
  573. Added GX2_VERTEX_BUFFER_ALIGNMENT, GX2_INDEX_BUFFER_ALIGNMENT, GX2_DEFAULT_BUFFER_ALIGNMENT and updated tests to use them as recommended.
  574. Graphics Memory Management Changes:
  575. Added Memory Management APIs to help transition to final hardware which fixes the GPU Endian Swap Issue (Fixed with CAT-DEV V3). Please do not use GX2TempAllocMEM1 and GX2TempAllocMEM2 directly. Use DEMOGfxAllocMEM1 and DEMOGfxAllocMEM2 instead. If you aren't use the demo library, we strongly recommend copying the functionality of these two functions to aid in the transition to final hardware (in a future SDK). (#572)
  576. Added APIs to notify GX2 of GPU7-bound data: GX2NotifyMemAlloc, GX2NotifyMemFree. If you override the default system allocator, we strongly recommend using these functions to inform GX2 of graphics related data. In a future SDK, we plan to support the ability to capture and replay graphics commands to help debug graphics-related issues and analyze performance. (#572)
  577. Updated documentation for GX2Invalidate. The DEMOGfxAlloc* (and GX2TempAlloc*) APIs currently allocate non-cached memory. So, not using GX2Invalidate properly will not cause issues. However, in a future SDK that only supports final hardware, calling GX2Invalidate will be essential. We strongly recommend to observe proper usage of GX2Invalidate to help transition to final hardware (in a future SDK).
  578. Modified DEMOCaptureCopy to support Host File IO. Passing a filename into DEMOCaptureCopy now works and will write the captured image to the file specified. If the filename doesn't start with '/', then it is saved under /vol/content (which normally maps to $CAFE_CONTENT_DIR), else an absolute pathname is expected (such as "/vol/save/capture.tga", putting "capture.tga" under $CAFE_SAVE_DIR). (#817, #878)
  579. Added support for GX2_SURFACE_FORMAT_T_BC5_SNORM and GX2_SURFACE_FORMAT_TC_R8_G8_UNORM to TexConv2.exe (#738, #739)
  580. Added support for GX2_SURFACE_FORMAT_T_NV12_UNORM to GX2. (#638)
  581. Fixed support for GX2_INDEX_FORMAT_U16 in GX2DrawIndexedImmediate which caused the GPU to hang (#810)
  582. Fixed various bugs in aticl.exe related to switching to the new standard template library: stl70 (#868)
  583. Fixed support for GX2_SURFACE_FORMAT_TCS_R8_G8_B8_A8_SRGB (#827)
  584. Removed some surface formats because of poor performance or utility: (#821)
  585. Updated DEMOGFDFreeVertexShader, DEMOGFDFreePixelShader and DEMOGFDFreeTexture to accept NULL (#882)
  586. Added testware that generates a 3D texture at runtime in system/src/test/gx2/shading/noise3D (#838)
  587. Added convenience functions: GX2GetSurfaceFormatBits, GX2GetAttribFormatBits, DEMOGfxGetSurfaceFormatName, and DEMOGfxGetAttribFormatName.
  588.  
  589. SDK 1.5 [2011-04-22]
  590.  
  591. Added 64-bit version of the txUtil libraries (TexConv2Page) (#494)
  592. Added the surface format GX2_SURFACE_FORMAT_T_R24_UNORM_G8_UINT. This format is only valid for GX2_SURFACE_USE_TEXTURE. If you render to a GX2_SURFACE_FORMAT_D_D24_S8_UNORM depth buffer, then you must use GX2ConvertDepthBufferToTextureSurface to change the color/depth tiling format before you access it as a texture. You may only access the depth (R24_UNORM) or stencil (G8_UINT) components one at a time, since each requires a different sampler type. (#763)
  593. Fixed bug that restricted the GX2 main thread to operate to core 1. Now GX2Init can be called from any core (see GX2 Management APIs) (#730)
  594. Fixed bug where memory addresses < 256MB were not compatible with GX2
  595. Updated shader compiler (aticl.exe)
  596. Replaced debug with release executable
  597. Fixed some compile-related bugs (#752, #789)
  598.  
  599. SDK 1.4 [2011-03-31]
  600.  
  601. Breaking Change: Updated surface format definitions: GX2SurfaceFormat
  602. The description of the surface format layout in memory has changed to correspond better to the actual hardware layout. Previously, a format such as GX2_SURFACE_FORMAT_TC_R5_G5_B5_A1_UNORM was said to fill in a 16-bit word starting from the MSB end. Now, it is said to fill in the word starting from the LSB end. The main difference is with 5_5_5_1/1_5_5_5 and 10_10_10_2/2_10_10_10 formats, which are reversed from what they were before. Other packed formats, such as GX2_SURFACE_FORMAT_TC_R4_G4_B4_A4_UNORM, were only described incorrectly before. Formats which have components that are 8, 16, or 32 bits in size are unaffected.
  603. Added APIs to handle using MSAA color buffers or MSAA/HiZ depth buffers as textures: GX2ResolveAAColorBuffer, GX2ExpandAAColorBuffer, GX2ExpandDepthBuffer, GX2ConvertDepthBufferToTextureSurface, GX2TempConvertColorSurfaceToDepthBuffer
  604. TexConv2.exe Updates (TexConv2Page)
  605. Added "-swizzle" option (#506)
  606. Added "-bc1alpha" option to specify alpha conversion thresholds for BC1 (#665)
  607. Added "-printinfo" option to print useful information such as texture alignment and size
  608. Added support to write DDS files from GX2 files
  609. Fixed all reported mip-map related bugs (#628)
  610. Added new attribute stream formats that allow conversion of integer-type data to floating point (without normalization) during fetch. This applies to all formats with 8 or 16-bit components only. (#705)
  611. Fixed support for swizzling textures to improve texture look-up performance for textures being accessed at the same time (see GX2 Texture Tiling) (#506)
  612. Created new structure-based interface to the matrix library (MAT)
  613. Fixed perspective/orthographic matrix to match OpenGL's expected near and far values (-1 <= z <= 1) (#686)
  614. Fixed shader compiler bug when a Uniform Block is used in multiple functions, but the first function is optimized out (#680)
  615. Fixed two performance counters that were returning incorrect results: GX2_PERF_U64_VS_VERTICES_IN, GX2_PERF_U64_PS_PIXELS_IN (#681)
  616. Fixed latticeDL to call GX2Invalidate appropriately. This is a common gotcha! (#682)
  617.  
  618. SDK 1.3 [2011-03-09]
  619.  
  620. Breaking Change: Changes have been made to the texture utilities library that require a user to call TexUtils::TC2Initialize before using other API calls.
  621. Other API calls made before this initialization will fail.
  622. There is also a corresponding TexUtils::TC2Destroy call that should be made after the last API call to shutdown the library.
  623. There is an example of this call being made in the main function in TexConvert.cpp.
  624. As a result of this initialization, the gpu parameter has been removed from existing API calls since it is specified at initialization.
  625. Breaking Change: The GX2SurfaceFormat enum now encodes the component channel mapping into the name of the enum.
  626. For example: GX2_SURFACE_FORMAT_TCS_8_8_8_8_UNORM is now GX2_SURFACE_FORMAT_TCS_R8_G8_B8_A8_UNORM.
  627. Breaking Change: The .w values of gl_FragCoord now have the pixel "w" value, not "1/w"
  628. The -DEMO_CB_FORMAT command line option for the DEMO library no longer changes the scan out buffer format.
  629. The new -DEMO_SCAN_FORMAT flag can be used to change the scan out buffer format.
  630. Shader compile error with "gl_FragCoord" has been resolved. (#551)
  631. The .x and .y values used with gl_FragCoord have an origin in the top left corner.
  632. TexConv2.exe now supports using a -align option which will properly align all data within the file to allow the file to be loaded into memory at up to 64KB alignment and use image pointers directly.(#608)
  633. Using the display formats 10_10_10_2 and 2_10_10_10 now work correctly with DEMOGfxInit (#617)
  634. Context states now correctly shadow shader state from GX2SetPixelShader and GX2SetVertexShader (#641)
  635. Added GFD APIs for PC tools.
  636. Please refer to GFDPage documentation for more information.
  637. Several issues were fixed for the texture converter (TexConv2Page)
  638. Mipmap generation for passthrough formats now works correctly
  639. Fixed crashing issue for mipmapped cubemaps (partial #455)
  640. Fixed padding issue for linear textures
  641. Fixed issue with non-power of 2 textures
  642. The texture converter (and library) now process alpha when a format with alpha is converted to BC1. (#665)
  643. If the alpha value is less than 127, the corresponding texel becomes transparent.
  644. BC5 textures now have their components in the opposite order from SDK 1.2 or earlier when using the texture converter
  645. The present order is correct for BC5.
  646. The previous order was correct for ATI2N (a variant of BC5).
  647. The present order also corresponds to "ATI2N with alternate XY swizzle."
  648.  
  649. SDK 1.2 [2011-02-23]
  650.  
  651. Enabled Host IO to move graphics assets from the PC to Cafe
  652. GPU clock has been changed for stability
  653. Future hardware will restore the clock
  654. Improved Command Buffer Management
  655. Moved from fixed size Command Buffers to variable size Command Buffers
  656. Enabled Write Gatherer (WG) to write commands into Command Buffers
  657. Important: This change requires that users allocated memory for Display Lists to come from the default memory allocator (not GX2TempAlloc*)
  658. Important: WG usage is restricted to GX2 for this release, a future release will demonstrate how to use WG for non-GX2 purposes.
  659. Improved CPU performance by reducing the number of calls to OSGetCoreId()
  660. Matured Texture Converter (TexConv2Page)
  661. Added more input/output formats are supported
  662. Added TGA support
  663. Fixed mipmap for 3D texture (#455)
  664. Fixed "-minmip 16" option for 32x32 dds texture (#455)
  665. Simplified and separated GX2 file format API from DEMO library to GFD library (GFDPage)
  666. Updated The GLSL Compiler
  667. Fixed support for offset of Uniform in UniformBlock with layout(std140) (#495)
  668. Fixed support for up to 32 attributes (was 16) (#521)
  669. Updated Video APIs (GX2DisplayPage)
  670. Added fully pipelined and adjustable video synchronization between the CPU, GPU, and display controller
  671. Added a swap interval parameter (removed busy-waiting for frames)
  672. Added CPU Access to Tiled Surfaces via HDP (GX2AllocateTilingAperture, GX2FreeTilingAperture, see GX2TexturePage)
  673. Added a parameter to GX2SetColorControl API to disable drawing to the color buffer for Z only rendering to run at full fillrate.
  674. Fixed Attribute Format support (GX2AttribFormat), and added example geometry/format (#496)
  675. Known issue: 10_10_10_2_UINT is not working well
  676. Fixed DEMO library to allow 1080 resolution again
  677. Added proper support for GX2SetTVGamma (#394)
  678. Fixed problem where Uniform Block consumed more memory than required (#574)
  679.  
  680. SDK 1.1 [2011-01-31]
  681.  
  682. Enabled dual export from the shader pipe, which allows the shader export block to pack two quads into each export to the render backend. This feature is only enabled if depth is not output from the shader. It's also not available for multiwrite (color 0 goes to all MRTs), SNORM/UNORM formats greater than 11 bits, FLOAT formats greater than 16 bits, or any SINT/UINT format. Under these conditions, GX2 will render 2X fill performance than previously. We recommend using 4QP to get maximum fill rate performance.
  683. Improved 720p AA performance by creating a large enough heap in MEM1 to fit color and depth buffers
  684. Changed the default number of Quad Pipes enabled by GX2 from 3 to 2 for stability (GX2HardwarePage)
  685. Improved overall performance of GX2 by optimizing Command Buffer Management implementation
  686. Updated TexConv2.exe
  687. General API clean-up
  688. Added TGA support
  689. Added texture array support
  690. Removed unnecessary calls to MTXTranspose in tests/demos, and reversed matrix multiplication order in shaders instead. (Optimization)
  691. Changed GX2SetDebugDraw to GX2SetDebugMode and added two features:
  692. Infinitely fast hardware
  693. Waits on all flushes not just the draw flushes
  694.  
  695. SDK 1.0 [2010-12-22]
  696.  
  697. Updated texture tools
  698. Added a new texture converter with a simpler design that can be easily integrated into tool chains as libraries
  699. Added 3D texture support
  700. Added Cube map support
  701. Display List support
  702. Create and call Display Lists at run-time
  703. Enables early Multi-Core rendering schemes
  704. MSAA Support
  705. Conditional Rendering depending on Occlusion Query
  706. Dual Source Blending
  707. Instancing Support
  708. Improved Draw APIs
  709. Improved Performance APIs
  710. Faster surface clears and copies
  711. Faster z-buffering
  712. Updated Shader Compiler (no verified changes)
  713. SPI Hang Workaround
  714. General API Clean-up
  715. Many functions have been changed to create a more consistent API
  716. Const Correct APIs
  717.  
  718. Pre-Release Milestone 2 [2010-10-29]
  719.  
  720. Context Switching (Hardware state shadowing)
  721. New Draw Calls
  722. Performance API & Tests
  723. Updated Texture API
  724. Expanded texture sampler APIs
  725. Expanded surface APIs to include views and mip-mapping
  726. Added Color channel APIs (rearranging channels)
  727. Switched to new video library
  728. Requires use of HDMI. VGA connection shows wrong colors.
  729. Synchronization APIs (including GX2DrawDone)
  730. Updated Demo Library
  731. Color Buffer Capture Utility
  732. Demo API consistency
  733. Alpha Test API & demo
  734. Cafe/trunk synchronization & Automated test suite
  735. General API Clean-up
  736. Removed GX2's dependency on demo library
  737. Updated Clear APIs
  738. Updated converter tools
  739. Requires update of all assets (textures & shaders)
  740.  
  741. Pre-Release Milestone 1 [2010-09-28]
  742.  
  743. Initial release with basic functionality
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement