summaryrefslogtreecommitdiffstats
path: root/src/VBox/GuestHost/OpenGL/include/cr_unpack.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-06 03:01:46 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-06 03:01:46 +0000
commitf8fe689a81f906d1b91bb3220acde2a4ecb14c5b (patch)
tree26484e9d7e2c67806c2d1760196ff01aaa858e8c /src/VBox/GuestHost/OpenGL/include/cr_unpack.h
parentInitial commit. (diff)
downloadvirtualbox-f8fe689a81f906d1b91bb3220acde2a4ecb14c5b.tar.xz
virtualbox-f8fe689a81f906d1b91bb3220acde2a4ecb14c5b.zip
Adding upstream version 6.0.4-dfsg.upstream/6.0.4-dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/VBox/GuestHost/OpenGL/include/cr_unpack.h')
-rw-r--r--src/VBox/GuestHost/OpenGL/include/cr_unpack.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/VBox/GuestHost/OpenGL/include/cr_unpack.h b/src/VBox/GuestHost/OpenGL/include/cr_unpack.h
new file mode 100644
index 00000000..61de8fcc
--- /dev/null
+++ b/src/VBox/GuestHost/OpenGL/include/cr_unpack.h
@@ -0,0 +1,98 @@
+/* Copyright (c) 2001, Stanford University
+ * All rights reserved.
+ *
+ * See the file LICENSE.txt for information on redistributing this software.
+ */
+
+#ifndef CR_UNPACK_H
+#define CR_UNPACK_H
+
+#include "cr_compiler.h"
+#include "cr_spu.h"
+#include "cr_protocol.h"
+#include "cr_mem.h"
+#include "cr_opcodes.h"
+
+#include <iprt/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern SPUDispatchTable cr_unpackDispatch;
+/*extern DLLDATA(const unsigned char *) cr_unpackData;*/
+extern DECLEXPORT(const unsigned char *) cr_unpackData;
+extern DECLEXPORT(const unsigned char *) cr_unpackDataEnd;
+
+DECLEXPORT(void) crUnpackSetReturnPointer( CRNetworkPointer *ptr );
+DECLEXPORT(void) crUnpackSetWritebackPointer( CRNetworkPointer *ptr );
+DECLEXPORT(void) crUnpack( const void *data, const void *data_end, const void *opcodes, unsigned int num_opcodes, SPUDispatchTable *table );
+DECLEXPORT(void) crUnpackPush(void);
+DECLEXPORT(void) crUnpackPop(void);
+
+typedef enum
+{
+ CR_UNPACK_BUFFER_TYPE_GENERIC = 0,
+ CR_UNPACK_BUFFER_TYPE_CMDBLOCK_BEGIN,
+ CR_UNPACK_BUFFER_TYPE_CMDBLOCK_FLUSH,
+ CR_UNPACK_BUFFER_TYPE_CMDBLOCK_END
+} CR_UNPACK_BUFFER_TYPE;
+
+DECLEXPORT(CR_UNPACK_BUFFER_TYPE) crUnpackGetBufferType(const void *opcodes, unsigned int num_opcodes);
+
+extern CRNetworkPointer * return_ptr;
+extern CRNetworkPointer * writeback_ptr;
+
+#if defined(LINUX) || defined(WINDOWS)
+#define CR_UNALIGNED_ACCESS_OKAY
+#else
+#undef CR_UNALIGNED_ACCESS_OKAY
+#endif
+DECLEXPORT(double) crReadUnalignedDouble( const void *buffer );
+
+#define READ_DATA( offset, type ) \
+ *( (const type *) (cr_unpackData + (offset)))
+
+#ifdef CR_UNALIGNED_ACCESS_OKAY
+#define READ_DOUBLE( offset ) \
+ READ_DATA( offset, GLdouble )
+#else
+#define READ_DOUBLE( offset ) \
+ crReadUnalignedDouble( cr_unpackData + (offset) )
+#endif
+
+#define READ_NETWORK_POINTER( offset ) \
+ ( cr_unpackData + (offset) )
+
+/* XXX make this const */
+#define DATA_POINTER( offset, type ) \
+ ( (type *) (cr_unpackData + (offset)) )
+
+#define DATA_POINTER_CHECK( offset ) \
+ ( (cr_unpackDataEnd >= cr_unpackData) && (size_t)(cr_unpackDataEnd - cr_unpackData) >= (size_t)(offset) )
+
+#define INCR_DATA_PTR( delta ) \
+ cr_unpackData += (delta)
+
+#define INCR_DATA_PTR_NO_ARGS() \
+ INCR_DATA_PTR( 4 )
+
+#define INCR_VAR_PTR() \
+ INCR_DATA_PTR( *((int *) cr_unpackData ) )
+
+#define SET_RETURN_PTR( offset ) do { \
+ CRDBGPTR_CHECKZ(return_ptr); \
+ crMemcpy( return_ptr, cr_unpackData + (offset), sizeof( *return_ptr ) ); \
+ } while (0);
+
+
+#define SET_WRITEBACK_PTR( offset ) do { \
+ CRDBGPTR_CHECKZ(writeback_ptr); \
+ crMemcpy( writeback_ptr, cr_unpackData + (offset), sizeof( *writeback_ptr ) ); \
+ } while (0);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CR_UNPACK_H */