VirtualBox

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

最後變更 在這個檔案從51504是 50975,由 vboxsync 提交於 11 年 前

crOpenGL build fix take 2

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Id
檔案大小: 2.4 KB
 
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 */
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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