Skip to content

Releases: vsrad/radeon-asm-tools

RadeonAsmTools 2021.05.19

19 May 16:36
Compare
Choose a tag to compare

Debugger

Improved

  • RadDebugBreakArgs macro is renamed to RadDebugAppArgs2; a new RadDebugAppArgs3 macro is added.
  • Open In Editor step doesn't change the active document now.
  • Add To Watches now excludes square brackets from watch name (var[a][b] is added to watches as var).
    The old behavior can be restored by enabling RAD Debug -> Options -> Match brackets on Add To Watches.
  • Faster execution of Read Debug Data step with Text output.

Fixed

  • Various error messages when editing profiles

Syntax

Improved

  • Improved options loading mechanism

Fixed

  • Error messages that sometimes pop up when editing/saving files
  • Errors when loading instruction files after reinstalling the extension

RadeonAsmTools 2021.05.06

06 May 14:39
Compare
Choose a tag to compare

Debugger

Added

  • The App args input field in Visualizer now stores the last 10 entered values, sorted in the most-to-least recently used order.
    Values can be pinned to be shown first.
  • Directories can now be copied using the Copy File step. Files with identical modification times can be skipped, and compression
    can be enabled for remote to local and local to remote transfers.
  • Outdated Debug Server versions are now reported by the extension. Currently the server needs to be updated to the latest version ().
    In later extension updates, we may offer a reduced functionality mode for legacy server versions.
  • Long-running or hanged actions can now be cancelled from the extension UI.
  • The following new visualizer appearance settings are now available:
    • Append leading zeroes to binary/hex numbers: pad hex numbers to 8 digits (0x00000001) and binary numbers to 32 digits;
    • Insert separator in binary/hex mode between groups of X digits: insert whitespace between each X characters in binary/hex representations starting from last digit (0x4 23 13);
    • Insert separator in int/uint mode between groups of X digits: insert whitespace between each X characters in int/uint representations starting from last digit (1 000 000).
  • Custom array slices can be added to watches from the editor's context menu: Add To Watches As Array -> Custom.

Improved

  • Configuration is now kept in two separate files: .conf.json, which contains information about profiles, and .user.json, which stores user-specific settings, such as visualizer appearance. .conf.json can be checked into source control without inconveniencing other users. Legacy configuration files are automatically converted to the new format.
  • Warnings about read-only configuration files are shown only when the configuration changes.

Feature Preview

Slice Visualizer

To enable this feature, set the EnableSliceVisualizer property in .user.json to true and restart Visual Studio. Go to RAD Options and select Open slice visualizer to open the slice visualizer window.

Short overview of slice visualizer:

  • Provides the ability to inspect values of a watch in the context of all executed threads.
  • Displayed as a table where rows represent work-groups and columns represent lanes.
  • Configure how many groups are presented in one row using the Show _ groups in one row field.
  • Use column selector for arbitrary-sized subgroups to set up the required slices of data.
  • Choose the data type used to represent the values.
  • Optionally enable the heat map mode to color all cells depending on their relative value (blue for the smallest and red for the largest).
  • RMB click on a cell to open the Visualizer window and inspect the corresponding value there.

Syntax

Added

  • Signature help pop-up window with function/instruction signature. When moving the caret or changing parameters, the current parameter is highlighted in bold. The pop-up is automatically dismissed on word deletion (ctrl+backspace), line deletion (ctrl+shift+l), delete to Begin Of Line, delete to End Of Line. To enable this feature, go to Tools -> Options -> RadeonAsm Options -> Intellisense, Signature help and select True.

Improved

  • The current instruction set can be saved and restored
  • Switched to asynchronous options loading for faster Visual Studio startup
  • Reduced memory usage
  • Adjusted dark theme colors

Fixed

  • Memory leaks when repeatedly opening Radeon Asm documents
  • Incorrect label reference highlighting
  • Incorrect function arguments highlighting
  • Incorrect single-line comments highlighting if there is some token to the left of it
  • Incorrect number highlighting with '-' symbol

RadeonAsmTools 2021.03.03

03 Mar 19:05
Compare
Choose a tag to compare

Debugger

Added

  • Target Hosts Editor for changing the hosts shown in the Target Host dropdown, reachable by expanding the dropdown and choosing Edit.

Fixed

  • If dispatch parameters file was set, data shape would be loaded from the file even with Manual override dispatch enabled.

Meta

  • Building VSRAD.Package in the Debug configuration could fail due to an incorrect configuration of the AfterBuild target.
  • Example now works with the latest versions of ROCm and RadeonAsmDebugger.

Improved

  • Add To Watches and Add To Watches As Array options in the editor context menu are now grouped together.
  • The arrow shown next to the current RAD Debugger break line is changed from blue to yellow to match the look of the stock breakpoint arrow.
  • Once a breakpoint is hit, the editor is automatically scrolled to its location.

Wavemap:

  • When all waves fit on the screen, the offset input is automatically hidden to save some vertical space.
  • Waves with an incomplete EXEC mask are shown with a darker color; previously, they were colored the same gray regardless of the break line hit by active lanes.

Syntax

Fixed

  • Incorrect outlining with if-elsif-endif preprocessor blocks
  • Error when #include references a non-existent file
  • Crash that could occur when starting Visual Studio

Improved

  • return keyword is now highlighted in asm2

RadeonAsmTools 2021.01.22

22 Jan 18:31
Compare
Choose a tag to compare

Debugger

Dispatch Parameters File

This release introduces a way to automatically set data shape from a dispatch parameters file. The path to this file is set in the Read Debug Data step. The expected format is:

grid_size (8196, 1, 1)
group_size (512, 1, 1)
wave_size 64
comment sample comment

grid_size determines the overall data shape. group_size determines the size of a single group (only the X dimension is currently used, so consider using flat index navigation without 3D NDRange mode). wave_size determines the number of lanes in a single wave. This parameter is used for displaying the wavemap, verifying the magic number and computing inactive lanes based on EXEC mask. Optional comment is displayed in the status string in the visualizer.

The old behavior of manually entering the data shape is preserved as an optional Manual override dispatch params mode in the visualizer. Use it if the required parameters cannot be automatically extracted in your debugging workflow.

Wavemap

Available in the visualizer, wavemap is a grid where each cell represents a wave, organized into columns by group # and rows by wave # in the group (i.e. every column corresponds to a group).

Each wave is colored according to the break line it hit, which lets you see where different waves reach a break at a glance. By hovering over the wavemap, you can see the exact break line, group #, and wave # for the wave under the cursor to the left of the grid.

(The break line is stored in the first lane of system watch, following the lane with the magic number, of each wave).

If the Check Magic number mode is enabled, waves where the zeroth wave does not match the magic number are grayed out and the break line info is replaced with “no brk”, showing that the wave did not reach a breakpoint.

If the Use data from lanes 8:9 (exec mask) to gray out columns mode is on, the waves with incomplete exec mask are grayed out in the grid, and the text “(E)” (short for EXEC) is appended to the wave index.

The size of wavemap cells can be changed in the Visualizer Appearance tab.

Debugging in Edit mode

Any action can now be designated as the debug action, as long as it contains a Read Debug Data step. The step specifies paths to the output files and how they are interpreted.

The debug action is executed when running RAD Debugger, which switches Visual Studio to Run mode. It can also be executed by clicking the Debug button on the RAD Toolbar while in Edit mode. A blue arrow is shown in the editor margin next to the last break line (or multiple lines when using the Multiple active breakpoints break mode).

Localhost mode

In cases where the debug server is run locally, the workflow can be simplified by checking Run on Localhost on the General tab of profile settings: all actions will be executed locally without connecting to the debug server.

The same profile can be used for local and remote debugging. When Run on Localhost is enabled, all Remote steps are automatically treated as local, and $ENVR(...) macros are evaluated as $ENV(...).

Furthermore, the target machine can now be easily switched for the current profile without going to options by using the Target Host dropdown on the RAD Toolbar.

Fixed

  • Opening a project with a corrupted .conf.json file could cause Visual Studio to hang.
  • Switching from and back to a RAD project could result in a “No active projects found” message.
  • A rare race condition could appear when multiple commands were being sent to the debug server at the same time.

Improved

  • Manual reconnection is no longer required to continue debugging after restarting the debug server on a remote machine.

Syntax

Added

  • Instruction set selector (you can choose the target instruction set)
  • Switch between displayed items in Function List (functions and labels, functions only, labels only)
  • Highlighting an error if an instruction does not belong to an instruction set
  • shader main asm2 keyword is now supported as a function

Fixed

  • Fixed bug if Function List was not opened at startup
  • Fixed Function definition highlighting in some cases
  • Fixed navigation to token if document was changed
  • Fixed navigation to token if document was closed
  • Fixed document outlining on the first opening

Improved

  • Improved parser and lexer performance
  • Indent guide lines are more user-friendly

RadeonAsmTools 2020.08.17

17 Aug 13:23
Compare
Choose a tag to compare

Starting with this release, only Visual Studio 2019 is supported. 2020.05.14 is the last release to support Visual Studio 2017.

Debugger

Flexible Configuration

Predefined actions ("Profile", "Disassemble", "Preprocess") are replaced with a flexible configuration system. Custom actions can be composed from primitive steps:
Copy a file from the local to the remote machine and vice versa
Execute a program on the local or the remote machine
Open a local file in Visual Studio and (optionally) navigate to a line marker
Run another action

Although projects created in earlier versions are imported automatically, there are some differences in functionality:
Build is not run automatically. You can add manually it as the first step for other actions (using a “Run Action” step with the action set to “Build”)

Visual C/C++ Project Integration

All supported features are now available in VisualC/C++ projects. “RAD Debugger” can be selected in the debugger dropdown for x86 and x64 platforms.

Added

Fixed

Alt-Tabbing away from and back to Visual Studio when the profile editor is open caused the editor window to become hidden while locking the UI
Circular macro references could cause the editor to become unresponsive

Improved

Visualizer can now display group sizes larger than 512 and smaller than 64
Selected cells in Visualizer appear grayed out when the table loses focus
$(RadActiveSourceFile) macro now evaluates to file name only (previously, it evaluated to a project-relative path). This change allows you to debug files that do not belong to the project. Note that out-of-project files are not deployed automatically -- you need to specify them in “Additional Sources”.

Syntax

Added

  • Added Instruction Set support. The extension includes default instruction set with description of parameters and flags for gfx8, gfx9 and gfx10. User can add their own instruction set
  • Support external definitions using the include keyword for highlighting, navigation, completion.
  • Autoscroll to сurrent function in the Function List
  • Highlight matching brace
  • Radeon Asm Navigation List window opens if more than one definition found
  • Automatically change syntax colors depending on Visual Studio theme

Fixed

  • Freezes when edition at the end of file
  • Incorrect behavior of current function highlighting on source changes
  • Current function highlighting if cursor in the function signature
  • Function List content when switching to sources that are not related to asm1 or asm2
  • Support multiple underscore symbols in the identifiers
  • The Function List filter was not applied if the source file was modified
  • Line number column had incorrect width when scrolling through a Function List with large numbers

Improved

  • Improved parser and lexer logic
  • Semicolon separator in the file extensions RadeonAsm options is used
  • Intellisense autocomplete suggestions in the unnecessary situations
  • Use clickable text elements with navigation action in the quick info tooltip
  • Show the default value of the variable in the quick info tooltip if it exists

RadeonAsmTools 2020.05.14

14 May 16:32
Compare
Choose a tag to compare

Debugger

Added

  • Hide This option in Visualizer table context menu to hide selected columns
  • Empty rows (watch name containing only spaces) can now be inserted in Visualizer table to separate watches
  • Appearance customization for Visualizer table, available in Tools -> RAD Debug -> Options -> Visualizer Appearance
  • Font and color customization for Visualizer table, available in Tools -> Options -> Fonts and Colors -> RAD Debugger
  • Separate Font Color and Background color menus for both rows and columns in Visualizer table
  • Multiple active breakpoints mode: when enabled, $(RadBreakLine) contains a colon-separated list of all enabled breakpoint lines
  • Status String File Path option in Debugger profile settings: when set, the content of the file is appended to the status string in Visualizer

Fixed

  • Debugger did not advance to the next breakpoint if execution failed, e.g. with a Data may be stale message
  • Build errors without a line number were not shown in Error List
  • Visualizer options to show/hide Columns, App args, Break args were not preserved across Visual Studio restarts

Improved

  • Visualizer table column scaling UX
  • Windows 10's Quick Edit feature is disabled in Debug Server to prevent hangs
  • Picking a column range in Keep First/Keep Last menus intersects the range with the current selector instead of overwriting it
  • Multiple watch rows can be reordered at once in Visualizer table
  • Drag'n'dropping a file into the project creates a link instead of copying the contents (hold Ctrl+Shift to make a copy)

Syntax

Added

  • Source file extensions for syntax highlighting can be changed in Options -> RadeonAsm Options -> Asm1 file extensions
  • Highlighted instructions can be changed in Options -> RadeonAsm Options -> Instruction folder paths (specified folders are searched for .radasm files with instructions; a default .radasm file is provided)
  • Code completion for instructions, functions, variables and labels (can be configured in Options -> RadeonAsm Options -> Autocompletion)
  • Highlighting for function invocations and label usages
  • Function List highlights the function currently in scope
  • Function List includes labels as well as functions

Fixed

  • Function List search issues
  • Errors disappearing from Error List when changing Error list view filter
  • Identifier highlighter did not recognize \.

Improved

  • Basic syntax definition for Asm2
  • Label navigation (Go To/Peek Definition)
  • Variables are correctly reported as GlobalVariable and LocalVariable in IntelliSense tooltips
  • Syntax highlighting colors are renamed to RAD ...

RadeonAsmTools 2020.02.27

27 Feb 15:31
Compare
Choose a tag to compare

Compatibility with previous versions

With this release, we switch to an improved installation experience: .bat scripts were merged into the extension installer and no longer need to be run by hand.

Due to this, projects created using older versions may fail to load or exhibit incorrect behavior. To migrate a project, execute the following in its root directory:

sed -i 's|\$(LocalAppData)\\CustomProjectSystems\\RADProject|$(MSBuildExtensionsPath)\\VSRAD|' *.radproj

In addition to this, we recommend you to manually remove the extensions before installing the latest release.

Debugger

Added

  • Hide This option in Visualizer table context menu to hide selected columns

Fixed

  • Incorrect scaling behavior for the first column in Visualizer table
  • Watched values were not grayed out when the value of Counter changed
  • Force Run To Cursor did not work outside of debug mode when no breakpoints were set

Syntax

Added quick info for variables, functions, function arguments. The tooltip is shown on mouse over and includes description picked from comments near the declaration site.

  • Fixed incorrect multi-line comment highlighting and collapsing
  • Fixed Peek Definition for functions (macros) with multi-line declaration

RadeonAsmTools 2020.01.23

23 Jan 18:59
Compare
Choose a tag to compare

Debugger

Fixed

  • Modified source files were not deployed in certain circumstances
  • Connection info in Options window was not updated on profile change

Improved

  • Function List can now be opened using an icon on RAD Debug toolbar

Syntax

  • Fixed incorrect indent guide line with multi-line function declaration

RadeonAsmTools 2020.01.17

17 Jan 11:12
Compare
Choose a tag to compare

Debugger

Fixed

  • Incorrect error message when the profile options file cannot be saved

RadeonAsmTools 2020.01.16

16 Jan 16:35
Compare
Choose a tag to compare

Debug Server has been ported to .NET Core 3.1, since the previously used version (2.2) has reached the end of life.