You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.7 KiB
107 lines
3.7 KiB
/*
|
|
** 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.
|
|
*/
|
|
|
|
#include "glslib.h"
|
|
|
|
GLSopcode __glsMapOpcode(GLSopcode inOpcode) {
|
|
GLint i;
|
|
const GLint page = __GLS_OPCODE_PAGE(inOpcode);
|
|
|
|
if (page < __GLS_OPCODE_PAGE_MAPPED0) return inOpcode;
|
|
#if __GLS_MAPPED_OPCODE_PAGE_COUNT
|
|
for (i = 0 ; i < __GLS_MAPPED_OPCODE_PAGE_COUNT ; ++i) {
|
|
if (page == __glsOpPageMap[i]) return (
|
|
__GLS_OPCODE(
|
|
__GLS_OPCODE_PAGE_MAPPED0 + i,
|
|
__GLS_OPCODE_OFFSET(inOpcode)
|
|
)
|
|
);
|
|
}
|
|
#endif /* __GLS_MAPPED_OPCODE_PAGE_COUNT */
|
|
return GLS_NONE;
|
|
}
|
|
|
|
GLSenum __glsOpcodeAPI(GLSopcode inOpcode) {
|
|
switch (__GLS_OPCODE_PAGE(inOpcode)) {
|
|
case __GLS_OPCODE_PAGE_GLS0:
|
|
case __GLS_OPCODE_PAGE_GLS1:
|
|
case __GLS_OPCODE_PAGE_GLS2:
|
|
return (
|
|
__glsOpcodeString[__glsMapOpcode(inOpcode)] ?
|
|
GLS_API_GLS :
|
|
GLS_NONE
|
|
);
|
|
case __GLS_OPCODE_PAGE_GL0:
|
|
case __GLS_OPCODE_PAGE_GL1:
|
|
case __GLS_OPCODE_PAGE_GL2:
|
|
case __GLS_OPCODE_PAGE_GL3:
|
|
case __GLS_OPCODE_PAGE_GL4:
|
|
case __GLS_OPCODE_PAGE_GL5:
|
|
case __GLS_OPCODE_PAGE_GL6:
|
|
case __GLS_OPCODE_PAGE_GL7:
|
|
case __GLS_OPCODE_PAGE_GL8:
|
|
case __GLS_OPCODE_PAGE_GL9:
|
|
case __GLS_OPCODE_PAGE_GL10:
|
|
case __GLS_OPCODE_PAGE_GL11:
|
|
case __GLS_OPCODE_PAGE_GL12:
|
|
case __GLS_OPCODE_PAGE_GL13:
|
|
case __GLS_OPCODE_PAGE_GL14:
|
|
case __GLS_OPCODE_PAGE_GL15:
|
|
case __GLS_OPCODE_PAGE_GL16:
|
|
case __GLS_OPCODE_PAGE_GL17:
|
|
case __GLS_OPCODE_PAGE_GL18:
|
|
case __GLS_OPCODE_PAGE_GL19:
|
|
// DrewB - 1.1
|
|
case __GLS_OPCODE_PAGE_GL20:
|
|
case __GLS_OPCODE_PAGE_GL_SGI0:
|
|
case __GLS_OPCODE_PAGE_GL_SGI1:
|
|
case __GLS_OPCODE_PAGE_GL_SGI2:
|
|
case __GLS_OPCODE_PAGE_GL_SGI3:
|
|
case __GLS_OPCODE_PAGE_GL_SGI4:
|
|
// DrewB - ColorSubTable
|
|
case __GLS_OPCODE_PAGE_GL_MSFT0:
|
|
return (
|
|
__glsOpcodeString[__glsMapOpcode(inOpcode)] ?
|
|
GLS_API_GL :
|
|
GLS_NONE
|
|
);
|
|
}
|
|
return GLS_NONE;
|
|
}
|
|
|
|
GLSopcode __glsUnmapOpcode(GLSopcode inOpcode) {
|
|
GLint i;
|
|
const GLint page = __GLS_OPCODE_PAGE(inOpcode);
|
|
|
|
if (page < __GLS_OPCODE_PAGE_MAPPED0) return inOpcode;
|
|
#if __GLS_MAPPED_OPCODE_PAGE_COUNT
|
|
for (i = 0 ; i < __GLS_MAPPED_OPCODE_PAGE_COUNT ; ++i) {
|
|
if (page == __GLS_OPCODE_PAGE_MAPPED0 + i) return (
|
|
__GLS_OPCODE(__glsOpPageMap[i], __GLS_OPCODE_OFFSET(inOpcode))
|
|
);
|
|
}
|
|
#endif /* __GLS_MAPPED_OPCODE_PAGE_COUNT */
|
|
return GLS_NONE;
|
|
}
|
|
|
|
GLboolean __glsValidateOpcode(GLSopcode inOpcode) {
|
|
if (!__glsOpcodeAPI(inOpcode)) {
|
|
__GLS_RAISE_ERROR(GLS_UNSUPPORTED_COMMAND);
|
|
return GL_FALSE;
|
|
}
|
|
return GL_TRUE;
|
|
}
|