* This is a lambda in upstream catch to avoid some warning, but that means that
when the debugbreak happens it's in the wrong stack frame (though at least on
the right line). Fortunately we can override it with a useful definition.
* Add CATCH_CONFIG_FORCE_FALLBACK_STRINGIFIER to force use of ToStr in
all cases. We can handle ints, etc, we don't need ostringstream, and
this allows us to handle enums that would otherwise just be printed as
their integer value.
* Add CATCH_CONFIG_INLINE_DEBUG_BREAK which restores the Catch 1.0
behaviour of debugbreaks happening in macros and so in-line at the
actual site failure. So the debugger stops on the CHECK() or REQUIRE()
call instead of inside AssertionHandler::complete()
Cherry pick from https://github.com/baldurk/renderdoc/commit/4232736fc21fc6a13a4de6997a5ae106598b225f
* This prevents unnecessary conversions back and forth between rdcstr and const
char * when going through interfaces. In the OS specific layer this is rarely
an issue because most of the implementations don't convert to rdcstr, but it
is convenient to be able to pass in an rdcstr directly. The few cases where
there's an unecessary construction of an rdcstr is acceptable.
* A couple of places in the public API need to return a string from a global
function, so can't return an rdcstr due to C ABI, so they still return a const
char *.
* Similarly const char * is kept for logging, to avoid a dependency on rdcstr
and because that's one place where unnecessary conversions/constructions may
be impactful.
* Comma operator problems when doing math functions that return two parameters
(e.g quotient).
* Passing bool tag type through varargs - the varargs aren't actually used and
there's an overload for true_type, so we can instead accept false_type.
* gcc seems to declare numeric_limits as a struct, so friend'ing it as a class
throws a warning. Since we only care about C++11 we can omit the tag from the
friend declaration.
* We instead always have 3rdparty/ in the relevant include search paths and rely
on that. Each library still has its own unique base dir within 3rdparty to
clarify where the include is coming from.
* Mostly moving includes from common headers to cpp where possible, and removing
includes of the whole thing where only enums or rdcstr etc are needed.
* Don't completely lose/misappropriate errors in tests that don't have a base
section
* Change the filename to actually be a filename, and include the base test name
as the first part of the section stack.
* Don't over-multiply duration by 1000 to convert to milliseconds twice.
* glslang's HLSL support now requires spirv-opt for correct functioning
and may need more in future, so it's disabled. The compilation was not
externally exposed, and in future this will be handled via
out-of-process execution of compilers.
* The update to SPIR-V headers also had the knock-on effect of allowing
SPIR-V 1.3. Closes#976