|
|
/*
** Copyright 1994, 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 "precomp.h"
#pragma hdrstop
#ifndef __GL_USEASMCODE
/*
** this is a series of depth testers written in C */
/*********************** non-masked writes ***********************/
/*
** NEVER, no mask */ GLboolean FASTCALL __glDT_NEVER( __GLzValue z, __GLzValue *zfb ) { return GL_FALSE; }
/*
** LEQUAL, no mask */ GLboolean FASTCALL __glDT_LEQUAL( __GLzValue z, __GLzValue *zfb ) { if( z <= *zfb ) { zfb[0] = z; return GL_TRUE; } else { return GL_FALSE; } }
/*
** LESS, no mask */ GLboolean FASTCALL __glDT_LESS( __GLzValue z, __GLzValue *zfb ) { if( z < *zfb ) { zfb[0] = z; return GL_TRUE; } else { return GL_FALSE; } }
/*
** EQUAL, no mask */ GLboolean FASTCALL __glDT_EQUAL( __GLzValue z, __GLzValue *zfb ) { if( z == *zfb ) { zfb[0] = z; /* why is this there? Who uses GL_EQUAL anyway? */ return GL_TRUE; } else { return GL_FALSE; } }
/*
** GREATER, no mask */ GLboolean FASTCALL __glDT_GREATER( __GLzValue z, __GLzValue *zfb ) { if( z > *zfb ) { zfb[0] = z; return GL_TRUE; } else { return GL_FALSE; } }
/*
** NOTEQUAL, no mask */ GLboolean FASTCALL __glDT_NOTEQUAL( __GLzValue z, __GLzValue *zfb ) { if( z != *zfb ) { zfb[0] = z; return GL_TRUE; } else { return GL_FALSE; } }
/*
** GEQUAL, no mask */ GLboolean FASTCALL __glDT_GEQUAL( __GLzValue z, __GLzValue *zfb ) { if( z >= *zfb ) { zfb[0] = z; return GL_TRUE; } else { return GL_FALSE; } }
/*
** ALWAYS, no mask */ GLboolean FASTCALL __glDT_ALWAYS( __GLzValue z, __GLzValue *zfb ) { zfb[0] = z; return GL_TRUE; }
/*********************** masked writes ***********************/
/*
** LEQUAL, mask */ GLboolean FASTCALL __glDT_LEQUAL_M( __GLzValue z, __GLzValue *zfb ) { return (z <= *zfb); }
/*
** LESS, mask */ GLboolean FASTCALL __glDT_LESS_M( __GLzValue z, __GLzValue *zfb ) { return (z < *zfb); }
/*
** EQUAL, mask */ GLboolean FASTCALL __glDT_EQUAL_M( __GLzValue z, __GLzValue *zfb ) { return (z == *zfb); }
/*
** GREATER, mask */ GLboolean FASTCALL __glDT_GREATER_M( __GLzValue z, __GLzValue *zfb ) { return (z > *zfb); }
/*
** NOTEQUAL, mask */ GLboolean FASTCALL __glDT_NOTEQUAL_M( __GLzValue z, __GLzValue *zfb ) { return (z != *zfb); }
/*
** GEQUAL, mask */ GLboolean FASTCALL __glDT_GEQUAL_M( __GLzValue z, __GLzValue *zfb ) { return (z >= *zfb); }
/*
** ALWAYS, mask */ GLboolean FASTCALL __glDT_ALWAYS_M( __GLzValue z, __GLzValue *zfb ) { return GL_TRUE; }
/*********************** 16-bit z versions ***********************/
/*
** LEQUAL, no mask */ GLboolean FASTCALL __glDT16_LEQUAL( __GLzValue z, __GLzValue *zfb ) { #if 0
if( (GLuint)z <= (GLuint)zbv ) { zfb[0] = z; return GL_TRUE; } else { return GL_FALSE; } #else
__GLz16Value z16 = z >> Z16_SHIFT;
if( z16 <= *((__GLz16Value *)zfb) ) { *((__GLz16Value *)zfb) = z16; return GL_TRUE; } else { return GL_FALSE; } #endif
}
/*
** LESS, no mask */ GLboolean FASTCALL __glDT16_LESS( __GLzValue z, __GLzValue *zfb ) { __GLz16Value z16 = z >> Z16_SHIFT;
if( z16 < *((__GLz16Value *)zfb) ) { *((__GLz16Value *)zfb) = z16; return GL_TRUE; } else { return GL_FALSE; } }
/*
** EQUAL, no mask */ GLboolean FASTCALL __glDT16_EQUAL( __GLzValue z, __GLzValue *zfb ) { __GLz16Value z16 = z >> Z16_SHIFT;
if( z16 == *((__GLz16Value *)zfb) ) { *((__GLz16Value *)zfb) = z16; return GL_TRUE; } else { return GL_FALSE; } }
/*
** GREATER, no mask */ GLboolean FASTCALL __glDT16_GREATER( __GLzValue z, __GLzValue *zfb ) { __GLz16Value z16 = z >> Z16_SHIFT;
if( z16 > *((__GLz16Value *)zfb) ) { *((__GLz16Value *)zfb) = z16; return GL_TRUE; } else { return GL_FALSE; } }
/*
** NOTEQUAL, no mask */ GLboolean FASTCALL __glDT16_NOTEQUAL( __GLzValue z, __GLzValue *zfb ) { __GLz16Value z16 = z >> Z16_SHIFT;
if( z16 != *((__GLz16Value *)zfb) ) { *((__GLz16Value *)zfb) = z16; return GL_TRUE; } else { return GL_FALSE; } }
/*
** GEQUAL, no mask */ GLboolean FASTCALL __glDT16_GEQUAL( __GLzValue z, __GLzValue *zfb ) { __GLz16Value z16 = z >> Z16_SHIFT;
if( z16 >= *((__GLz16Value *)zfb) ) { *((__GLz16Value *)zfb) = z16; return GL_TRUE; } else { return GL_FALSE; } }
/*
** ALWAYS, no mask */ GLboolean FASTCALL __glDT16_ALWAYS( __GLzValue z, __GLzValue *zfb ) { *((__GLz16Value *)zfb) = z >> Z16_SHIFT; return GL_TRUE; }
/*********************** masked writes ***********************/
/*
** LEQUAL, mask */ GLboolean FASTCALL __glDT16_LEQUAL_M( __GLzValue z, __GLzValue *zfb ) { return( (z >> Z16_SHIFT) <= *((__GLz16Value *)zfb) ); }
/*
** LESS, mask */ GLboolean FASTCALL __glDT16_LESS_M( __GLzValue z, __GLzValue *zfb ) { return( (z >> Z16_SHIFT) < *((__GLz16Value *)zfb) ); }
/*
** EQUAL, mask */ GLboolean FASTCALL __glDT16_EQUAL_M( __GLzValue z, __GLzValue *zfb ) { return( (z >> Z16_SHIFT) == *((__GLz16Value *)zfb) ); }
/*
** GREATER, mask */ GLboolean FASTCALL __glDT16_GREATER_M( __GLzValue z, __GLzValue *zfb ) { return( (z >> Z16_SHIFT) > *((__GLz16Value *)zfb) ); }
/*
** NOTEQUAL, mask */ GLboolean FASTCALL __glDT16_NOTEQUAL_M( __GLzValue z, __GLzValue *zfb ) { return( (z >> Z16_SHIFT) != *((__GLz16Value *)zfb) ); }
/*
** GEQUAL, mask */ GLboolean FASTCALL __glDT16_GEQUAL_M( __GLzValue z, __GLzValue *zfb ) { return( (z >> Z16_SHIFT) >= *((__GLz16Value *)zfb) ); }
/*
** ALWAYS, mask */ GLboolean FASTCALL __glDT16_ALWAYS_M( __GLzValue z, __GLzValue *zfb ) { return GL_TRUE; }
#endif /* !__GL_USEASMCODE */
|