source: trunk/src/opengl/mesa/mmx.h@ 3721

Last change on this file since 3721 was 3597, checked in by jeroen, 25 years ago

* empty log message *

File size: 2.6 KB
Line 
1/* $Id: mmx.h,v 1.3 2000-05-23 20:34:53 jeroen Exp $ */
2
3/*
4 * Mesa 3-D graphics library
5 * Version: 3.1
6 *
7 * Copyright (C) 1999 Brian Paul All Rights Reserved.
8 *
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 */
26
27
28
29
30
31#ifndef ASM_MMX_H
32#define ASM_MMX_H
33
34
35extern void _ASMAPI
36gl_mmx_blend_transparency( GLcontext *ctx, GLuint n, const GLubyte mask[],
37 GLubyte rgba[][4], const GLubyte dest[][4] );
38
39
40void gl_mmx_set_blend_function( GLcontext *ctx )
41{
42 const GLenum eq = ctx->Color.BlendEquation;
43 const GLenum srcRGB = ctx->Color.BlendSrcRGB;
44 const GLenum dstRGB = ctx->Color.BlendDstRGB;
45 const GLenum srcA = ctx->Color.BlendSrcA;
46 const GLenum dstA = ctx->Color.BlendDstA;
47
48
49 if (srcRGB != srcA || dstRGB != dstA) {
50 ctx->Color.BlendFunc = blend_general;
51 }
52 else if (eq==GL_FUNC_ADD_EXT && srcRGB==GL_SRC_ALPHA
53 && dstRGB==GL_ONE_MINUS_SRC_ALPHA) {
54 ctx->Color.BlendFunc = gl_mmx_blend_transparency;
55 }
56 else if (eq==GL_FUNC_ADD_EXT && srcRGB==GL_ONE && dstRGB==GL_ONE) {
57 ctx->Color.BlendFunc = blend_add;
58 }
59 else if (((eq==GL_FUNC_ADD_EXT || eq==GL_FUNC_REVERSE_SUBTRACT_EXT)
60 && (srcRGB==GL_ZERO && dstRGB==GL_SRC_COLOR))
61 ||
62 ((eq==GL_FUNC_ADD_EXT || eq==GL_FUNC_SUBTRACT_EXT)
63 && (srcRGB==GL_DST_COLOR && dstRGB==GL_ZERO))) {
64 ctx->Color.BlendFunc = blend_modulate;
65 }
66 else if (eq==GL_MIN_EXT) {
67 ctx->Color.BlendFunc = blend_min;
68 }
69 else if (eq==GL_MAX_EXT) {
70 ctx->Color.BlendFunc = blend_max;
71 }
72 else {
73 ctx->Color.BlendFunc = blend_general;
74 }
75}
76
77
78#endif
Note: See TracBrowser for help on using the repository browser.