197 lines
6.8 KiB
C
197 lines
6.8 KiB
C
|
#if !defined(__glslib_h_)
|
||
|
#define __glslib_h_
|
||
|
|
||
|
/*
|
||
|
** Copyright 1995-2095, Silicon Graphics, Inc.
|
||
|
** All Rights Reserved.
|
||
|
**
|
||
|
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
|
||
|
** the contents of this file may not be disclosed to third parties, copied or
|
||
|
** duplicated in any form, in whole or in part, without the prior written
|
||
|
** permission of Silicon Graphics, Inc.
|
||
|
**
|
||
|
** RESTRICTED RIGHTS LEGEND:
|
||
|
** Use, duplication or disclosure by the Government is subject to restrictions
|
||
|
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||
|
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||
|
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||
|
** rights reserved under the Copyright Laws of the United States.
|
||
|
*/
|
||
|
|
||
|
/******************************************************************************
|
||
|
Constants
|
||
|
******************************************************************************/
|
||
|
|
||
|
#define __GLS_BOOLEAN 0x0001
|
||
|
|
||
|
#define __GLS_MAX_ALIGN_BYTES 8
|
||
|
#define __GLS_MAX_CALL_NESTING 64
|
||
|
#define __GLS_MAX_CAPTURE_NESTING 16
|
||
|
#define __GLS_MAX_OUT_ARGS 4
|
||
|
#define __GLS_VERSION_MAJOR 1
|
||
|
#define __GLS_VERSION_MINOR 0
|
||
|
|
||
|
#define __GLS_COMMAND_ALIGN_EVEN32_BIT 0x80000000
|
||
|
#define __GLS_COMMAND_ALIGN_ODD32_BIT 0x40000000
|
||
|
#define __GLS_COMMAND_0_PARAMS_BIT 0x20000000
|
||
|
#define __GLS_COMMAND_ATTRIB_MASK 0x0000FFFF
|
||
|
|
||
|
/******************************************************************************
|
||
|
Extensions
|
||
|
******************************************************************************/
|
||
|
|
||
|
// DrewB
|
||
|
#ifndef __GLS_PLATFORM_WIN32
|
||
|
#define __GL_EXT_abgr 1
|
||
|
#define __GL_EXT_blend_color 1
|
||
|
#define __GL_EXT_blend_logic_op 1
|
||
|
#define __GL_EXT_blend_minmax 1
|
||
|
#define __GL_EXT_blend_subtract 1
|
||
|
#define __GL_EXT_cmyka 1
|
||
|
#define __GL_EXT_convolution 1
|
||
|
#define __GL_EXT_copy_texture 1
|
||
|
#define __GL_EXT_histogram 1
|
||
|
#define __GL_EXT_packed_pixels 1
|
||
|
#define __GL_EXT_polygon_offset 1
|
||
|
#define __GL_EXT_rescale_normal 1
|
||
|
#define __GL_EXT_subtexture 1
|
||
|
#define __GL_EXT_texture 1
|
||
|
#define __GL_EXT_texture_object 1
|
||
|
#define __GL_EXT_texture3D 1
|
||
|
#define __GL_EXT_vertex_array 1
|
||
|
#else
|
||
|
#define __GL_EXT_paletted_texture 1
|
||
|
#define __GL_EXT_bgra 1
|
||
|
#define __GL_WIN_draw_range_elements 1
|
||
|
#endif
|
||
|
|
||
|
#if __GLS_PLATFORM_IRIX
|
||
|
|
||
|
#define __GL_SGI_color_matrix 1
|
||
|
#define __GL_SGI_color_table 1
|
||
|
#define __GL_SGI_texture_color_table 1
|
||
|
#define __GL_SGIS_component_select 1
|
||
|
#define __GL_SGIS_detail_texture 1
|
||
|
#define __GL_SGIS_multisample 1
|
||
|
#define __GL_SGIS_sharpen_texture 1
|
||
|
#define __GL_SGIS_texture_border_clamp 1
|
||
|
#define __GL_SGIS_texture4D 1
|
||
|
#define __GL_SGIX_interlace 1
|
||
|
#define __GL_SGIX_multisample 1
|
||
|
#define __GL_SGIX_pixel_texture 1
|
||
|
#define __GL_SGIX_pixel_tiles 1
|
||
|
#define __GL_SGIX_texture_multi_buffer 1
|
||
|
|
||
|
#if __GLS_PLATFORM_IRIX_FUTURE
|
||
|
#define __GL_SGIS_texture_edge_clamp 1
|
||
|
#define __GL_SGIS_texture_filter4 0
|
||
|
#define __GL_SGIS_texture_lod 1
|
||
|
#define __GL_SGIX_multipass 0
|
||
|
#define __GL_SGIX_sprite 0
|
||
|
#endif /* __GLS_PLATFORM_IRIX_FUTURE */
|
||
|
|
||
|
#endif /* __GLS_PLATFORM_IRIX */
|
||
|
|
||
|
/******************************************************************************
|
||
|
Macros
|
||
|
******************************************************************************/
|
||
|
|
||
|
#define __GL_ENUM_OFFSET(inEnum) (GLint)(inEnum % __GL_ENUMS_PER_PAGE)
|
||
|
#define __GL_ENUM_PAGE(inEnum) (GLint)(inEnum / __GL_ENUMS_PER_PAGE)
|
||
|
|
||
|
#define __GL_ENUM(inPage, inOffset) ( \
|
||
|
(inPage) * __GL_ENUMS_PER_PAGE + (inOffset) \
|
||
|
)
|
||
|
|
||
|
#define __GLS_ENUM_OFFSET(inEnum) (GLint)(inEnum % __GLS_ENUMS_PER_PAGE)
|
||
|
#define __GLS_ENUM_PAGE(inEnum) (GLint)(inEnum / __GLS_ENUMS_PER_PAGE)
|
||
|
|
||
|
#define __GLS_ENUM(inPage, inOffset) ( \
|
||
|
(inPage) * __GLS_ENUMS_PER_PAGE + (inOffset) \
|
||
|
)
|
||
|
|
||
|
#define __GLS_FORWARD
|
||
|
|
||
|
/******************************************************************************
|
||
|
Includes
|
||
|
******************************************************************************/
|
||
|
|
||
|
#include <glmf.h>
|
||
|
#include "glsint.h"
|
||
|
#include "glsutil.h"
|
||
|
#include "encoding.h"
|
||
|
#include "opcode.h"
|
||
|
#include "pixel.h"
|
||
|
#include "read.h"
|
||
|
#include "parser.h"
|
||
|
#include "ctx.h"
|
||
|
#include "platform.h"
|
||
|
#include "write.h"
|
||
|
#ifdef __GLS_PLATFORM_WIN32
|
||
|
// DrewB
|
||
|
#include "glssize.h"
|
||
|
#endif
|
||
|
|
||
|
/******************************************************************************
|
||
|
Global data
|
||
|
******************************************************************************/
|
||
|
|
||
|
extern const GLSenum __glsAllAPIs[__GLS_API_COUNT + 1];
|
||
|
extern const GLubyte *const __glAttribMaskString[__GL_ATTRIB_MASK_COUNT];
|
||
|
extern const GLbitfield __glAttribMaskVal[__GL_ATTRIB_MASK_COUNT];
|
||
|
extern __GLSdict *__glsContextDict;
|
||
|
extern __GLScontextList __glsContextList;
|
||
|
extern const GLubyte *const *const __glEnumString[__GL_ENUM_PAGE_COUNT];
|
||
|
extern const GLint __glEnumStringCount[__GL_ENUM_PAGE_COUNT];
|
||
|
extern const GLSfunc __glsDispatchCapture[__GLS_OPCODE_COUNT];
|
||
|
extern __GLSdecodeBinFunc __glsDispatchDecode_bin_default[__GLS_OPCODE_COUNT];
|
||
|
|
||
|
extern const __GLSdecodeBinFunc __glsDispatchDecode_bin_swap[
|
||
|
__GLS_OPCODE_COUNT
|
||
|
];
|
||
|
|
||
|
extern const __GLSdecodeTextFunc __glsDispatchDecode_text[__GLS_OPCODE_COUNT];
|
||
|
extern GLSfunc __glsDispatchExec[__GLS_OPCODE_COUNT];
|
||
|
extern const GLubyte *const *const __glsEnumString[__GLS_ENUM_PAGE_COUNT];
|
||
|
extern const GLint __glsEnumStringCount[__GLS_ENUM_PAGE_COUNT];
|
||
|
extern const GLubyte *const __glsExtensions;
|
||
|
extern const GLubyte *const __glsImageFlagsString[__GLS_IMAGE_FLAGS_COUNT];
|
||
|
extern const GLbitfield __glsImageFlagsVal[__GLS_IMAGE_FLAGS_COUNT];
|
||
|
extern const GLbitfield __glsOpcodeAttrib[__GLS_OPCODE_COUNT];
|
||
|
extern const GLubyte *const __glsOpcodeString[__GLS_OPCODE_COUNT];
|
||
|
extern const GLSopcode __glsOpcodesGL[];
|
||
|
extern const GLSopcode __glsOpcodesGLS[];
|
||
|
extern const GLint __glsOpcodesGLCount;
|
||
|
extern const GLint __glsOpcodesGLSCount;
|
||
|
extern __GLSparser *__glsParser;
|
||
|
|
||
|
#if __GLS_MAPPED_OPCODE_PAGE_COUNT
|
||
|
extern const GLint __glsOpPageMap[__GLS_MAPPED_OPCODE_PAGE_COUNT];
|
||
|
#endif /* __GLS_MAPPED_OPCODE_PAGE_COUNT */
|
||
|
|
||
|
/******************************************************************************
|
||
|
Global functions
|
||
|
******************************************************************************/
|
||
|
|
||
|
#define __GLS_RAISE_ERROR(inError) if (!__GLS_ERROR) __GLS_PUT_ERROR(inError)
|
||
|
|
||
|
#ifndef __GLS_PLATFORM_WIN32
|
||
|
// DrewB
|
||
|
extern void __glsCallError(GLSopcode inOpcode, GLSenum inError);
|
||
|
#define __GLS_CALL_ERROR(ctx, inOpcode, inError) \
|
||
|
__glsCallError(inOpcode, inError)
|
||
|
extern void __glsCallUnsupportedCommand(void);
|
||
|
#define __GLS_CALL_UNSUPPORTED_COMMAND(ctx) \
|
||
|
__glsCallUnsupportedCommand()
|
||
|
#else
|
||
|
extern void __glsCallError(__GLScontext *ctx,
|
||
|
GLSopcode inOpcode, GLSenum inError);
|
||
|
#define __GLS_CALL_ERROR(ctx, inOpcode, inError) \
|
||
|
__glsCallError(ctx, inOpcode, inError)
|
||
|
extern void __glsCallUnsupportedCommand(__GLScontext *ctx);
|
||
|
#define __GLS_CALL_UNSUPPORTED_COMMAND(ctx) \
|
||
|
__glsCallUnsupportedCommand(ctx)
|
||
|
#endif
|
||
|
|
||
|
#endif /* __glslib_h_ */
|