Super basic vertex buffer display in trace viewer.

This commit is contained in:
Ben Vanik
2015-03-20 21:54:52 -07:00
parent 8ce30448f8
commit 6b7b57cecf
3 changed files with 266 additions and 5 deletions

View File

@@ -211,6 +211,20 @@ typedef enum {
XE_GPU_SWIZZLE_R000 = XE_GPU_MAKE_SWIZZLE(R, 0, 0, 0),
} XE_GPU_SWIZZLE;
inline uint16_t GpuSwap(uint16_t value, Endian endianness) {
switch (endianness) {
case Endian::kUnspecified:
// No swap.
return value;
case Endian::k8in16:
// Swap bytes in half words.
return ((value << 8) & 0xFF00FF00) | ((value >> 8) & 0x00FF00FF);
default:
assert_unhandled_case(endianness);
return value;
}
}
inline uint32_t GpuSwap(uint32_t value, Endian endianness) {
switch (endianness) {
default:
@@ -230,10 +244,18 @@ inline uint32_t GpuSwap(uint32_t value, Endian endianness) {
}
}
inline uint32_t GpuToCpu(uint32_t p) {
return p;
inline float GpuSwap(float value, Endian endianness) {
union {
uint32_t i;
float f;
} v;
v.f = value;
v.i = GpuSwap(v.i, endianness);
return v.f;
}
inline uint32_t GpuToCpu(uint32_t p) { return p; }
// XE_GPU_REG_SQ_PROGRAM_CNTL
typedef union {
XEPACKEDSTRUCTANONYMOUS({