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
Raw File
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%\" %*
back to top