VirtualBox

source: vbox/trunk/src/VBox/GuestHost/OpenGL/include/cr_unpack.h@ 51279

Last change on this file since 51279 was 50975, checked in by vboxsync, 11 years ago

crOpenGL build fix take 2

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 2.4 KB
Line 
1/* Copyright (c) 2001, Stanford University
2 * All rights reserved.
3 *
4 * See the file LICENSE.txt for information on redistributing this software.
5 */
6
7#ifndef CR_UNPACK_H
8#define CR_UNPACK_H
9
10#include "cr_compiler.h"
11#include "cr_spu.h"
12#include "cr_protocol.h"
13#include "cr_mem.h"
14#include "cr_opcodes.h"
15
16#include <iprt/types.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22extern SPUDispatchTable cr_unpackDispatch;
23/*extern DLLDATA(const unsigned char *) cr_unpackData;*/
24extern DECLEXPORT(const unsigned char *) cr_unpackData;
25
26DECLEXPORT(void) crUnpackSetReturnPointer( CRNetworkPointer *ptr );
27DECLEXPORT(void) crUnpackSetWritebackPointer( CRNetworkPointer *ptr );
28DECLEXPORT(void) crUnpack( const void *data, const void *opcodes, unsigned int num_opcodes, SPUDispatchTable *table );
29DECLEXPORT(void) crUnpackPush(void);
30DECLEXPORT(void) crUnpackPop(void);
31
32typedef enum
33{
34 CR_UNPACK_BUFFER_TYPE_GENERIC = 0,
35 CR_UNPACK_BUFFER_TYPE_CMDBLOCK_BEGIN,
36 CR_UNPACK_BUFFER_TYPE_CMDBLOCK_END
37} CR_UNPACK_BUFFER_TYPE;
38
39DECLEXPORT(CR_UNPACK_BUFFER_TYPE) crUnpackGetBufferType(const void *opcodes, unsigned int num_opcodes);
40
41extern CRNetworkPointer * return_ptr;
42extern CRNetworkPointer * writeback_ptr;
43
44#if defined(LINUX) || defined(WINDOWS)
45#define CR_UNALIGNED_ACCESS_OKAY
46#else
47#undef CR_UNALIGNED_ACCESS_OKAY
48#endif
49DECLEXPORT(double) crReadUnalignedDouble( const void *buffer );
50
51#define READ_DATA( offset, type ) \
52 *( (const type *) (cr_unpackData + (offset)))
53
54#ifdef CR_UNALIGNED_ACCESS_OKAY
55#define READ_DOUBLE( offset ) \
56 READ_DATA( offset, GLdouble )
57#else
58#define READ_DOUBLE( offset ) \
59 crReadUnalignedDouble( cr_unpackData + (offset) )
60#endif
61
62#define READ_NETWORK_POINTER( offset ) \
63 ( cr_unpackData + (offset) )
64
65/* XXX make this const */
66#define DATA_POINTER( offset, type ) \
67 ( (type *) (cr_unpackData + (offset)) )
68
69#define INCR_DATA_PTR( delta ) \
70 cr_unpackData += (delta)
71
72#define INCR_DATA_PTR_NO_ARGS() \
73 INCR_DATA_PTR( 4 )
74
75#define INCR_VAR_PTR() \
76 INCR_DATA_PTR( *((int *) cr_unpackData ) )
77
78#define SET_RETURN_PTR( offset ) do { \
79 CRDBGPTR_CHECKZ(return_ptr); \
80 crMemcpy( return_ptr, cr_unpackData + (offset), sizeof( *return_ptr ) ); \
81 } while (0);
82
83
84#define SET_WRITEBACK_PTR( offset ) do { \
85 CRDBGPTR_CHECKZ(writeback_ptr); \
86 crMemcpy( writeback_ptr, cr_unpackData + (offset), sizeof( *writeback_ptr ) ); \
87 } while (0);
88
89#ifdef __cplusplus
90}
91#endif
92
93#endif /* CR_UNPACK_H */
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette