Revision 1a698128c15bce0c05b0664bb1458842e1e55511 authored by Tim Foley on 06 June 2018, 04:35:48 UTC, committed by GitHub on 06 June 2018, 04:35:48 UTC
* Fix atomic operations on RWBuffer An earlier change added support for passing true pointers to `__ref` parameters to fix the global `Interlocked*()` functions when applied to `groupshared` variables or `RWStructureBuffer<T>` elements. That change didn't apply to `RWBuffer<T>` or `RWTexture2D<T>`, etc. because those types had so far only declared `get` and `set` accessors, but not any `ref` accessors (which return a pointer). The main fixes here are: * Add `ref` accessors to the subscript oeprations on the `RW*` resource types * Adjust the logic for emitting calls to subscript accessors so that we don't get quite as eager about invoking a `ref` accessor, and instead try to invoke just a `get` or `set` accessor when these will suffice. This is important for Vulkan cross-compilation, where we don't yet support the semantics of our `ref` accessors. * Add a test case for atomics on a `RWBuffer` * Fix up `render-test` so that we can specify a format for a buffer resource, which allows us to use things other than `*StructuredBuffer` and `*ByteAddressBuffer`. The work there is probably not complete; I just did what I could to get the test working. * A bunch of files got whitespace edits thanks to the fact that I'm using editorconfig and others on the project seemingly arent... * fixup: remove ifdefed-out code
1 parent 8b16bbf
test.bat
@echo off
setlocal
pushd %~dp0
:: Argument parsing loop, for arguments that we need to handle at the .bat level
:ARGLOOP
if "%1"=="-debug" (
set SLANG_TEST_CONFIG=Debug
shift
goto :ARGLOOP
)
if "%1"=="-release" (
set SLANG_TEST_CONFIG=Release
shift
goto :ARGLOOP
)
if "%1"=="-platform" (
set SLANG_TEST_PLATFORM=%2
shift
shift
goto :ARGLOOP
)
if "%1"=="-configuration" (
set SLANG_TEST_CONFIG=%2
shift
shift
goto :ARGLOOP
)
:: When done with arguments, we'll just fall through here
:: Set root directory to the directory where `test.bat` resides
:: (which should be the root of the source tree)
SET "SLANG_TEST_ROOT=%~dp0"
:: If platform and configuration haven't been set, then set
:: them to default values.
IF "%SLANG_TEST_PLATFORM%" == "" ( SET "SLANG_TEST_PLATFORM=x86" )
IF "%SLANG_TEST_CONFIG%" == "" ( SET "SLANG_TEST_CONFIG=Debug" )
:: If the user specified a platform of "Win32" swap that to "x86"
:: to match how we are generating our output directories.
IF "%SLANG_TEST_PLATFORM%"=="Win32" ( Set "SLANG_TEST_PLATFORM=x86" )
:: Establish the directory where the binaries to be tested reside
set "SLANG_TEST_BIN_DIR=%SLANG_TEST_ROOT%bin\windows-%SLANG_TEST_PLATFORM%\%SLANG_TEST_CONFIG%\"
:: ensure that any built tools are visible
SET "PATH=%PATH%;%SLANG_TEST_BIN_DIR%"
:: TODO: Maybe we should actually invoke `msbuild` to make sure all the code is up to date?
"%SLANG_TEST_BIN_DIR%slang-test.exe" -bindir "%SLANG_TEST_BIN_DIR%\" %*
Computing file changes ...