Changeset 3598 for trunk/src/opengl/mesa/texstate.c
- Timestamp:
- May 23, 2000, 10:41:28 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/opengl/mesa/texstate.c
r2962 r3598 1 /* $Id: texstate.c,v 1. 2 2000-03-01 18:49:36 jeroen Exp $ */1 /* $Id: texstate.c,v 1.3 2000-05-23 20:40:56 jeroen Exp $ */ 2 2 3 3 /* 4 4 * Mesa 3-D graphics library 5 * Version: 3. 15 * Version: 3.3 6 6 * 7 7 * Copyright (C) 1999 Brian Paul All Rights Reserved. … … 30 30 #include "all.h" 31 31 #else 32 #ifndef XFree86Server 33 #include <assert.h> 34 #include <stdio.h> 35 #else 36 #include "GL/xf86glx.h" 37 #endif 32 #include "glheader.h" 38 33 #include "types.h" 39 34 #include "context.h" … … 67 62 /**********************************************************************/ 68 63 69 70 void gl_TexEnvfv( GLcontext *ctx, 71 GLenum target, GLenum pname, const GLfloat *param ) 72 { 64 void 65 _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param ) 66 { 67 GET_CURRENT_CONTEXT(ctx); 73 68 struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; 74 69 75 70 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glTexEnv"); 76 71 77 if (target!=GL_TEXTURE_ENV) { 72 if (target==GL_TEXTURE_ENV) { 73 74 if (pname==GL_TEXTURE_ENV_MODE) { 75 GLenum mode = (GLenum) (GLint) *param; 76 switch (mode) { 77 case GL_ADD: 78 if (!ctx->Extensions.HaveTextureEnvAdd) { 79 gl_error(ctx, GL_INVALID_ENUM, "glTexEnv(param)"); 80 return; 81 } 82 /* FALL-THROUGH */ 83 case GL_MODULATE: 84 case GL_BLEND: 85 case GL_DECAL: 86 case GL_REPLACE: 87 /* A small optimization for drivers */ 88 if (texUnit->EnvMode == mode) 89 return; 90 91 if (MESA_VERBOSE & (VERBOSE_STATE|VERBOSE_TEXTURE)) 92 fprintf(stderr, "glTexEnv: old mode %s, new mode %s\n", 93 gl_lookup_enum_by_nr(texUnit->EnvMode), 94 gl_lookup_enum_by_nr(mode)); 95 96 texUnit->EnvMode = mode; 97 ctx->NewState |= NEW_TEXTURE_ENV; 98 break; 99 default: 100 gl_error( ctx, GL_INVALID_VALUE, "glTexEnv(param)" ); 101 return; 102 } 103 } 104 else if (pname==GL_TEXTURE_ENV_COLOR) { 105 texUnit->EnvColor[0] = CLAMP( param[0], 0.0F, 1.0F ); 106 texUnit->EnvColor[1] = CLAMP( param[1], 0.0F, 1.0F ); 107 texUnit->EnvColor[2] = CLAMP( param[2], 0.0F, 1.0F ); 108 texUnit->EnvColor[3] = CLAMP( param[3], 0.0F, 1.0F ); 109 } 110 else { 111 gl_error( ctx, GL_INVALID_ENUM, "glTexEnv(pname)" ); 112 return; 113 } 114 115 } 116 else if (target==GL_TEXTURE_FILTER_CONTROL_EXT) { 117 118 if (!ctx->Extensions.HaveTextureLodBias) { 119 gl_error( ctx, GL_INVALID_ENUM, "glTexEnv(param)" ); 120 return; 121 } 122 123 if (pname==GL_TEXTURE_LOD_BIAS_EXT) { 124 texUnit->LodBias = param[0]; 125 } 126 else { 127 gl_error( ctx, GL_INVALID_ENUM, "glTexEnv(pname)" ); 128 return; 129 } 130 131 } 132 else { 78 133 gl_error( ctx, GL_INVALID_ENUM, "glTexEnv(target)" ); 79 134 return; … … 82 137 if (MESA_VERBOSE&(VERBOSE_API|VERBOSE_TEXTURE)) 83 138 fprintf(stderr, "glTexEnv %s %s %.1f(%s) ...\n", 84 gl_lookup_enum_by_nr(target), 85 gl_lookup_enum_by_nr(pname), 86 *param, 87 gl_lookup_enum_by_nr((GLenum) (GLint) *param)); 88 89 90 if (pname==GL_TEXTURE_ENV_MODE) { 91 GLenum mode = (GLenum) (GLint) *param; 92 switch (mode) { 93 case GL_MODULATE: 94 case GL_BLEND: 95 case GL_DECAL: 96 case GL_REPLACE: 97 if (texUnit->EnvMode == mode) 98 return; /* no change */ 99 100 if (MESA_VERBOSE & (VERBOSE_STATE|VERBOSE_TEXTURE)) 101 fprintf(stderr, "glTexEnv: old mode %s, new mode %s\n", 102 gl_lookup_enum_by_nr(texUnit->EnvMode), 103 gl_lookup_enum_by_nr(mode)); 104 105 texUnit->EnvMode = mode; 106 ctx->NewState |= NEW_TEXTURE_ENV; 107 break; 108 default: 109 gl_error( ctx, GL_INVALID_VALUE, "glTexEnv(param)" ); 110 return; 111 } 112 } 113 else if (pname==GL_TEXTURE_ENV_COLOR) { 114 texUnit->EnvColor[0] = CLAMP( param[0], 0.0F, 1.0F ); 115 texUnit->EnvColor[1] = CLAMP( param[1], 0.0F, 1.0F ); 116 texUnit->EnvColor[2] = CLAMP( param[2], 0.0F, 1.0F ); 117 texUnit->EnvColor[3] = CLAMP( param[3], 0.0F, 1.0F ); 118 } 119 else { 120 gl_error( ctx, GL_INVALID_ENUM, "glTexEnv(pname)" ); 121 return; 122 } 139 gl_lookup_enum_by_nr(target), 140 gl_lookup_enum_by_nr(pname), 141 *param, 142 gl_lookup_enum_by_nr((GLenum) (GLint) *param)); 123 143 124 144 /* Tell device driver about the new texture environment */ 125 145 if (ctx->Driver.TexEnv) { 126 (*ctx->Driver.TexEnv)( ctx, pname, param ); 127 } 128 } 129 130 131 132 133 134 void gl_GetTexEnvfv( GLcontext *ctx, 135 GLenum target, GLenum pname, GLfloat *params ) 136 { 146 (*ctx->Driver.TexEnv)( ctx, target, pname, param ); 147 } 148 149 } 150 151 152 void 153 _mesa_TexEnvf( GLenum target, GLenum pname, GLfloat param ) 154 { 155 _mesa_TexEnvfv( target, pname, ¶m ); 156 } 157 158 159 160 void 161 _mesa_TexEnvi( GLenum target, GLenum pname, GLint param ) 162 { 163 GLfloat p[4]; 164 p[0] = (GLfloat) param; 165 p[1] = p[2] = p[3] = 0.0; 166 _mesa_TexEnvfv( target, pname, p ); 167 } 168 169 170 void 171 _mesa_TexEnviv( GLenum target, GLenum pname, const GLint *param ) 172 { 173 GLfloat p[4]; 174 p[0] = INT_TO_FLOAT( param[0] ); 175 p[1] = INT_TO_FLOAT( param[1] ); 176 p[2] = INT_TO_FLOAT( param[2] ); 177 p[3] = INT_TO_FLOAT( param[3] ); 178 _mesa_TexEnvfv( target, pname, p ); 179 } 180 181 182 void 183 _mesa_GetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ) 184 { 185 GET_CURRENT_CONTEXT(ctx); 137 186 struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; 187 188 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetTexEnvfv"); 189 138 190 if (target!=GL_TEXTURE_ENV) { 139 191 gl_error( ctx, GL_INVALID_ENUM, "glGetTexEnvfv(target)" ); … … 143 195 case GL_TEXTURE_ENV_MODE: 144 196 *params = ENUM_TO_FLOAT(texUnit->EnvMode); 145 197 break; 146 198 case GL_TEXTURE_ENV_COLOR: 147 148 199 COPY_4FV( params, texUnit->EnvColor ); 200 break; 149 201 default: 150 202 gl_error( ctx, GL_INVALID_ENUM, "glGetTexEnvfv(pname)" ); … … 153 205 154 206 155 void gl_GetTexEnviv( GLcontext *ctx, 156 GLenum target, GLenum pname, GLint *params ) 157 { 207 void 208 _mesa_GetTexEnviv( GLenum target, GLenum pname, GLint *params ) 209 { 210 GET_CURRENT_CONTEXT(ctx); 158 211 struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; 212 213 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetTexEnviv"); 214 159 215 if (target!=GL_TEXTURE_ENV) { 160 216 gl_error( ctx, GL_INVALID_ENUM, "glGetTexEnviv(target)" ); … … 164 220 case GL_TEXTURE_ENV_MODE: 165 221 *params = (GLint) texUnit->EnvMode; 166 222 break; 167 223 case GL_TEXTURE_ENV_COLOR: 168 169 170 171 172 224 params[0] = FLOAT_TO_INT( texUnit->EnvColor[0] ); 225 params[1] = FLOAT_TO_INT( texUnit->EnvColor[1] ); 226 params[2] = FLOAT_TO_INT( texUnit->EnvColor[2] ); 227 params[3] = FLOAT_TO_INT( texUnit->EnvColor[3] ); 228 break; 173 229 default: 174 230 gl_error( ctx, GL_INVALID_ENUM, "glGetTexEnviv(pname)" ); … … 184 240 185 241 186 void gl_TexParameterfv( GLcontext *ctx, 187 GLenum target, GLenum pname, const GLfloat *params ) 188 { 242 void 243 _mesa_TexParameterf( GLenum target, GLenum pname, GLfloat param ) 244 { 245 _mesa_TexParameterfv(target, pname, ¶m); 246 } 247 248 249 void 250 _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params ) 251 { 252 GET_CURRENT_CONTEXT(ctx); 189 253 struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; 190 254 GLenum eparam = (GLenum) (GLint) params[0]; 191 255 struct gl_texture_object *texObj; 192 256 257 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glTexParameterfv"); 258 193 259 if (MESA_VERBOSE&(VERBOSE_API|VERBOSE_TEXTURE)) 194 260 fprintf(stderr, "texPARAM %s %s %d...\n", 195 196 197 261 gl_lookup_enum_by_nr(target), 262 gl_lookup_enum_by_nr(pname), 263 eparam); 198 264 199 265 … … 331 397 332 398 333 334 void gl_GetTexLevelParameterfv( GLcontext *ctx, GLenum target, GLint level, 335 GLenum pname, GLfloat *params ) 399 void 400 _mesa_TexParameteri( GLenum target, GLenum pname, const GLint param ) 401 { 402 GLfloat fparam[4]; 403 fparam[0] = (GLfloat) param; 404 fparam[1] = fparam[2] = fparam[3] = 0.0; 405 _mesa_TexParameterfv(target, pname, fparam); 406 } 407 408 void 409 _mesa_TexParameteriv( GLenum target, GLenum pname, const GLint *params ) 410 { 411 GLfloat fparam[4]; 412 fparam[0] = (GLfloat) params[0]; 413 fparam[1] = fparam[2] = fparam[3] = 0.0; 414 _mesa_TexParameterfv(target, pname, fparam); 415 } 416 417 418 void 419 _mesa_GetTexLevelParameterfv( GLenum target, GLint level, 420 GLenum pname, GLfloat *params ) 336 421 { 337 422 GLint iparam; 338 gl_GetTexLevelParameteriv( ctx,target, level, pname, &iparam );423 _mesa_GetTexLevelParameteriv( target, level, pname, &iparam ); 339 424 *params = (GLfloat) iparam; 340 425 } … … 342 427 343 428 344 void gl_GetTexLevelParameteriv( GLcontext *ctx, GLenum target, GLint level, 345 GLenum pname, GLint *params ) 346 { 429 void 430 _mesa_GetTexLevelParameteriv( GLenum target, GLint level, 431 GLenum pname, GLint *params ) 432 { 433 GET_CURRENT_CONTEXT(ctx); 347 434 const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; 348 435 const struct gl_texture_image *img = NULL; 349 436 GLuint dimensions; 437 438 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetTexLevelParameter"); 350 439 351 440 if (level < 0 || level >= ctx->Const.MaxTextureLevels) { … … 380 469 break; 381 470 default: 382 471 gl_error(ctx, GL_INVALID_ENUM, "glGetTexLevelParameter[if]v(target)"); 383 472 return; 384 473 } … … 449 538 450 539 451 452 void gl_GetTexParameterfv( GLcontext *ctx, 453 GLenum target, GLenum pname, GLfloat *params ) 454 { 540 void 541 _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) 542 { 543 GET_CURRENT_CONTEXT(ctx); 455 544 struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; 456 545 struct gl_texture_object *obj; 546 547 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetTexParameterfv"); 457 548 458 549 switch (target) { … … 473 564 switch (pname) { 474 565 case GL_TEXTURE_MAG_FILTER: 475 476 566 *params = ENUM_TO_FLOAT(obj->MagFilter); 567 break; 477 568 case GL_TEXTURE_MIN_FILTER: 478 569 *params = ENUM_TO_FLOAT(obj->MinFilter); … … 517 608 518 609 519 void gl_GetTexParameteriv( GLcontext *ctx, 520 GLenum target, GLenum pname, GLint *params ) 521 { 610 void 611 _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) 612 { 613 GET_CURRENT_CONTEXT(ctx); 522 614 struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; 523 615 struct gl_texture_object *obj; 616 617 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetTexParameteriv"); 524 618 525 619 switch (target) { … … 534 628 break; 535 629 default: 536 gl_error(ctx, GL_INVALID_ENUM, "glGetTexParameter fv(target)");630 gl_error(ctx, GL_INVALID_ENUM, "glGetTexParameteriv(target)"); 537 631 return; 538 632 } … … 598 692 599 693 600 void gl_TexGenfv( GLcontext *ctx, 601 GLenum coord, GLenum pname, const GLfloat *params ) 602 { 694 void 695 _mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params ) 696 { 697 GET_CURRENT_CONTEXT(ctx); 603 698 GLuint tUnit = ctx->Texture.CurrentTransformUnit; 604 699 struct gl_texture_unit *texUnit = &ctx->Texture.Unit[tUnit]; … … 607 702 if (MESA_VERBOSE&(VERBOSE_API|VERBOSE_TEXTURE)) 608 703 fprintf(stderr, "texGEN %s %s %x...\n", 609 610 611 612 613 switch ( coord) {704 gl_lookup_enum_by_nr(coord), 705 gl_lookup_enum_by_nr(pname), 706 *(int *)params); 707 708 switch (coord) { 614 709 case GL_S: 615 710 if (pname==GL_TEXTURE_GEN_MODE) { 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 711 GLenum mode = (GLenum) (GLint) *params; 712 switch (mode) { 713 case GL_OBJECT_LINEAR: 714 texUnit->GenModeS = mode; 715 texUnit->GenBitS = TEXGEN_OBJ_LINEAR; 716 break; 717 case GL_EYE_LINEAR: 718 texUnit->GenModeS = mode; 719 texUnit->GenBitS = TEXGEN_EYE_LINEAR; 720 break; 721 case GL_REFLECTION_MAP_NV: 722 texUnit->GenModeS = mode; 723 texUnit->GenBitS = TEXGEN_REFLECTION_MAP_NV; 724 break; 725 case GL_NORMAL_MAP_NV: 726 texUnit->GenModeS = mode; 727 texUnit->GenBitS = TEXGEN_NORMAL_MAP_NV; 728 break; 729 case GL_SPHERE_MAP: 730 texUnit->GenModeS = mode; 731 texUnit->GenBitS = TEXGEN_SPHERE_MAP; 732 break; 733 default: 734 gl_error( ctx, GL_INVALID_ENUM, "glTexGenfv(param)" ); 735 return; 736 } 737 } 738 else if (pname==GL_OBJECT_PLANE) { 739 texUnit->ObjectPlaneS[0] = params[0]; 740 texUnit->ObjectPlaneS[1] = params[1]; 741 texUnit->ObjectPlaneS[2] = params[2]; 742 texUnit->ObjectPlaneS[3] = params[3]; 743 } 744 else if (pname==GL_EYE_PLANE) { 650 745 /* Transform plane equation by the inverse modelview matrix */ 651 746 if (ctx->ModelView.flags & MAT_DIRTY_INVERSE) { … … 654 749 gl_transform_vector( texUnit->EyePlaneS, params, 655 750 ctx->ModelView.inv ); 656 657 658 659 660 661 751 } 752 else { 753 gl_error( ctx, GL_INVALID_ENUM, "glTexGenfv(pname)" ); 754 return; 755 } 756 break; 662 757 case GL_T: 663 758 if (pname==GL_TEXTURE_GEN_MODE) { 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 759 GLenum mode = (GLenum) (GLint) *params; 760 switch(mode) { 761 case GL_OBJECT_LINEAR: 762 texUnit->GenModeT = GL_OBJECT_LINEAR; 763 texUnit->GenBitT = TEXGEN_OBJ_LINEAR; 764 break; 765 case GL_EYE_LINEAR: 766 texUnit->GenModeT = GL_EYE_LINEAR; 767 texUnit->GenBitT = TEXGEN_EYE_LINEAR; 768 break; 769 case GL_REFLECTION_MAP_NV: 770 texUnit->GenModeT = GL_REFLECTION_MAP_NV; 771 texUnit->GenBitT = TEXGEN_REFLECTION_MAP_NV; 772 break; 773 case GL_NORMAL_MAP_NV: 774 texUnit->GenModeT = GL_NORMAL_MAP_NV; 775 texUnit->GenBitT = TEXGEN_NORMAL_MAP_NV; 776 break; 777 case GL_SPHERE_MAP: 778 texUnit->GenModeT = GL_SPHERE_MAP; 779 texUnit->GenBitT = TEXGEN_SPHERE_MAP; 780 break; 781 default: 782 gl_error( ctx, GL_INVALID_ENUM, "glTexGenfv(param)" ); 783 return; 784 } 785 } 786 else if (pname==GL_OBJECT_PLANE) { 787 texUnit->ObjectPlaneT[0] = params[0]; 788 texUnit->ObjectPlaneT[1] = params[1]; 789 texUnit->ObjectPlaneT[2] = params[2]; 790 texUnit->ObjectPlaneT[3] = params[3]; 791 } 792 else if (pname==GL_EYE_PLANE) { 698 793 /* Transform plane equation by the inverse modelview matrix */ 699 794 if (ctx->ModelView.flags & MAT_DIRTY_INVERSE) { … … 702 797 gl_transform_vector( texUnit->EyePlaneT, params, 703 798 ctx->ModelView.inv ); 704 705 706 707 708 709 799 } 800 else { 801 gl_error( ctx, GL_INVALID_ENUM, "glTexGenfv(pname)" ); 802 return; 803 } 804 break; 710 805 case GL_R: 711 806 if (pname==GL_TEXTURE_GEN_MODE) { 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 807 GLenum mode = (GLenum) (GLint) *params; 808 switch (mode) { 809 case GL_OBJECT_LINEAR: 810 texUnit->GenModeR = GL_OBJECT_LINEAR; 811 texUnit->GenBitR = TEXGEN_OBJ_LINEAR; 812 break; 813 case GL_REFLECTION_MAP_NV: 814 texUnit->GenModeR = GL_REFLECTION_MAP_NV; 815 texUnit->GenBitR = TEXGEN_REFLECTION_MAP_NV; 816 break; 817 case GL_NORMAL_MAP_NV: 818 texUnit->GenModeR = GL_NORMAL_MAP_NV; 819 texUnit->GenBitR = TEXGEN_NORMAL_MAP_NV; 820 break; 821 case GL_EYE_LINEAR: 822 texUnit->GenModeR = GL_EYE_LINEAR; 823 texUnit->GenBitR = TEXGEN_EYE_LINEAR; 824 break; 825 default: 826 gl_error( ctx, GL_INVALID_ENUM, "glTexGenfv(param)" ); 827 return; 828 } 829 } 830 else if (pname==GL_OBJECT_PLANE) { 831 texUnit->ObjectPlaneR[0] = params[0]; 832 texUnit->ObjectPlaneR[1] = params[1]; 833 texUnit->ObjectPlaneR[2] = params[2]; 834 texUnit->ObjectPlaneR[3] = params[3]; 835 } 836 else if (pname==GL_EYE_PLANE) { 742 837 /* Transform plane equation by the inverse modelview matrix */ 743 838 if (ctx->ModelView.flags & MAT_DIRTY_INVERSE) { … … 746 841 gl_transform_vector( texUnit->EyePlaneR, params, 747 842 ctx->ModelView.inv ); 748 749 750 751 752 753 843 } 844 else { 845 gl_error( ctx, GL_INVALID_ENUM, "glTexGenfv(pname)" ); 846 return; 847 } 848 break; 754 849 case GL_Q: 755 850 if (pname==GL_TEXTURE_GEN_MODE) { 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 851 GLenum mode = (GLenum) (GLint) *params; 852 switch (mode) { 853 case GL_OBJECT_LINEAR: 854 texUnit->GenModeQ = GL_OBJECT_LINEAR; 855 texUnit->GenBitQ = TEXGEN_OBJ_LINEAR; 856 break; 857 case GL_EYE_LINEAR: 858 texUnit->GenModeQ = GL_EYE_LINEAR; 859 texUnit->GenBitQ = TEXGEN_EYE_LINEAR; 860 break; 861 default: 862 gl_error( ctx, GL_INVALID_ENUM, "glTexGenfv(param)" ); 863 return; 864 } 865 } 866 else if (pname==GL_OBJECT_PLANE) { 867 texUnit->ObjectPlaneQ[0] = params[0]; 868 texUnit->ObjectPlaneQ[1] = params[1]; 869 texUnit->ObjectPlaneQ[2] = params[2]; 870 texUnit->ObjectPlaneQ[3] = params[3]; 871 } 872 else if (pname==GL_EYE_PLANE) { 778 873 /* Transform plane equation by the inverse modelview matrix */ 779 874 if (ctx->ModelView.flags & MAT_DIRTY_INVERSE) { … … 782 877 gl_transform_vector( texUnit->EyePlaneQ, params, 783 878 ctx->ModelView.inv ); 784 785 786 787 788 789 879 } 880 else { 881 gl_error( ctx, GL_INVALID_ENUM, "glTexGenfv(pname)" ); 882 return; 883 } 884 break; 790 885 default: 791 886 gl_error( ctx, GL_INVALID_ENUM, "glTexGenfv(coord)" ); 792 887 return; 793 888 } 794 889 … … 797 892 798 893 799 800 void gl_GetTexGendv( GLcontext *ctx, 801 GLenum coord, GLenum pname, GLdouble *params ) 802 { 894 void 895 _mesa_TexGeniv(GLenum coord, GLenum pname, const GLint *params ) 896 { 897 GLfloat p[4]; 898 p[0] = params[0]; 899 p[1] = params[1]; 900 p[2] = params[2]; 901 p[3] = params[3]; 902 _mesa_TexGenfv(coord, pname, p); 903 } 904 905 906 void 907 _mesa_TexGend(GLenum coord, GLenum pname, GLdouble param ) 908 { 909 GLfloat p = (GLfloat) param; 910 _mesa_TexGenfv( coord, pname, &p ); 911 } 912 913 914 void 915 _mesa_TexGendv(GLenum coord, GLenum pname, const GLdouble *params ) 916 { 917 GLfloat p[4]; 918 p[0] = params[0]; 919 p[1] = params[1]; 920 p[2] = params[2]; 921 p[3] = params[3]; 922 _mesa_TexGenfv( coord, pname, p ); 923 } 924 925 926 void 927 _mesa_TexGenf( GLenum coord, GLenum pname, GLfloat param ) 928 { 929 _mesa_TexGenfv(coord, pname, ¶m); 930 } 931 932 933 void 934 _mesa_TexGeni( GLenum coord, GLenum pname, GLint param ) 935 { 936 _mesa_TexGeniv( coord, pname, ¶m ); 937 } 938 939 940 941 void 942 _mesa_GetTexGendv( GLenum coord, GLenum pname, GLdouble *params ) 943 { 944 GET_CURRENT_CONTEXT(ctx); 803 945 GLuint tUnit = ctx->Texture.CurrentTransformUnit; 804 946 struct gl_texture_unit *texUnit = &ctx->Texture.Unit[tUnit]; … … 810 952 if (pname==GL_TEXTURE_GEN_MODE) { 811 953 params[0] = ENUM_TO_DOUBLE(texUnit->GenModeS); 812 813 954 } 955 else if (pname==GL_OBJECT_PLANE) { 814 956 COPY_4V( params, texUnit->ObjectPlaneS ); 815 816 957 } 958 else if (pname==GL_EYE_PLANE) { 817 959 COPY_4V( params, texUnit->EyePlaneS ); 818 819 820 821 822 823 960 } 961 else { 962 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" ); 963 return; 964 } 965 break; 824 966 case GL_T: 825 967 if (pname==GL_TEXTURE_GEN_MODE) { 826 968 params[0] = ENUM_TO_DOUBLE(texUnit->GenModeT); 827 828 969 } 970 else if (pname==GL_OBJECT_PLANE) { 829 971 COPY_4V( params, texUnit->ObjectPlaneT ); 830 831 972 } 973 else if (pname==GL_EYE_PLANE) { 832 974 COPY_4V( params, texUnit->EyePlaneT ); 833 834 835 836 837 838 975 } 976 else { 977 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" ); 978 return; 979 } 980 break; 839 981 case GL_R: 840 982 if (pname==GL_TEXTURE_GEN_MODE) { 841 983 params[0] = ENUM_TO_DOUBLE(texUnit->GenModeR); 842 843 984 } 985 else if (pname==GL_OBJECT_PLANE) { 844 986 COPY_4V( params, texUnit->ObjectPlaneR ); 845 846 987 } 988 else if (pname==GL_EYE_PLANE) { 847 989 COPY_4V( params, texUnit->EyePlaneR ); 848 849 850 851 852 853 990 } 991 else { 992 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" ); 993 return; 994 } 995 break; 854 996 case GL_Q: 855 997 if (pname==GL_TEXTURE_GEN_MODE) { 856 998 params[0] = ENUM_TO_DOUBLE(texUnit->GenModeQ); 857 858 999 } 1000 else if (pname==GL_OBJECT_PLANE) { 859 1001 COPY_4V( params, texUnit->ObjectPlaneQ ); 860 861 1002 } 1003 else if (pname==GL_EYE_PLANE) { 862 1004 COPY_4V( params, texUnit->EyePlaneQ ); 863 864 865 866 867 868 1005 } 1006 else { 1007 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" ); 1008 return; 1009 } 1010 break; 869 1011 default: 870 1012 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(coord)" ); 871 return; 872 } 873 } 874 875 876 877 void gl_GetTexGenfv( GLcontext *ctx, 878 GLenum coord, GLenum pname, GLfloat *params ) 879 { 1013 return; 1014 } 1015 } 1016 1017 1018 1019 void 1020 _mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ) 1021 { 1022 GET_CURRENT_CONTEXT(ctx); 880 1023 GLuint tUnit = ctx->Texture.CurrentTransformUnit; 881 1024 struct gl_texture_unit *texUnit = &ctx->Texture.Unit[tUnit]; … … 887 1030 if (pname==GL_TEXTURE_GEN_MODE) { 888 1031 params[0] = ENUM_TO_FLOAT(texUnit->GenModeS); 889 890 1032 } 1033 else if (pname==GL_OBJECT_PLANE) { 891 1034 COPY_4V( params, texUnit->ObjectPlaneS ); 892 893 1035 } 1036 else if (pname==GL_EYE_PLANE) { 894 1037 COPY_4V( params, texUnit->EyePlaneS ); 895 896 897 898 899 900 1038 } 1039 else { 1040 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(pname)" ); 1041 return; 1042 } 1043 break; 901 1044 case GL_T: 902 1045 if (pname==GL_TEXTURE_GEN_MODE) { 903 1046 params[0] = ENUM_TO_FLOAT(texUnit->GenModeT); 904 905 1047 } 1048 else if (pname==GL_OBJECT_PLANE) { 906 1049 COPY_4V( params, texUnit->ObjectPlaneT ); 907 908 1050 } 1051 else if (pname==GL_EYE_PLANE) { 909 1052 COPY_4V( params, texUnit->EyePlaneT ); 910 911 912 913 914 915 1053 } 1054 else { 1055 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(pname)" ); 1056 return; 1057 } 1058 break; 916 1059 case GL_R: 917 1060 if (pname==GL_TEXTURE_GEN_MODE) { 918 1061 params[0] = ENUM_TO_FLOAT(texUnit->GenModeR); 919 920 1062 } 1063 else if (pname==GL_OBJECT_PLANE) { 921 1064 COPY_4V( params, texUnit->ObjectPlaneR ); 922 923 1065 } 1066 else if (pname==GL_EYE_PLANE) { 924 1067 COPY_4V( params, texUnit->EyePlaneR ); 925 926 927 928 929 930 1068 } 1069 else { 1070 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(pname)" ); 1071 return; 1072 } 1073 break; 931 1074 case GL_Q: 932 1075 if (pname==GL_TEXTURE_GEN_MODE) { 933 1076 params[0] = ENUM_TO_FLOAT(texUnit->GenModeQ); 934 935 1077 } 1078 else if (pname==GL_OBJECT_PLANE) { 936 1079 COPY_4V( params, texUnit->ObjectPlaneQ ); 937 938 1080 } 1081 else if (pname==GL_EYE_PLANE) { 939 1082 COPY_4V( params, texUnit->EyePlaneQ ); 940 941 942 943 944 945 1083 } 1084 else { 1085 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(pname)" ); 1086 return; 1087 } 1088 break; 946 1089 default: 947 1090 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(coord)" ); 948 return; 949 } 950 } 951 952 953 954 void gl_GetTexGeniv( GLcontext *ctx, 955 GLenum coord, GLenum pname, GLint *params ) 956 { 1091 return; 1092 } 1093 } 1094 1095 1096 1097 void 1098 _mesa_GetTexGeniv( GLenum coord, GLenum pname, GLint *params ) 1099 { 1100 GET_CURRENT_CONTEXT(ctx); 957 1101 GLuint tUnit = ctx->Texture.CurrentTransformUnit; 958 1102 struct gl_texture_unit *texUnit = &ctx->Texture.Unit[tUnit]; … … 964 1108 if (pname==GL_TEXTURE_GEN_MODE) { 965 1109 params[0] = texUnit->GenModeS; 966 967 1110 } 1111 else if (pname==GL_OBJECT_PLANE) { 968 1112 params[0] = (GLint) texUnit->ObjectPlaneS[0]; 969 1113 params[1] = (GLint) texUnit->ObjectPlaneS[1]; 970 1114 params[2] = (GLint) texUnit->ObjectPlaneS[2]; 971 1115 params[3] = (GLint) texUnit->ObjectPlaneS[3]; 972 973 1116 } 1117 else if (pname==GL_EYE_PLANE) { 974 1118 params[0] = (GLint) texUnit->EyePlaneS[0]; 975 1119 params[1] = (GLint) texUnit->EyePlaneS[1]; 976 1120 params[2] = (GLint) texUnit->EyePlaneS[2]; 977 1121 params[3] = (GLint) texUnit->EyePlaneS[3]; 978 979 980 981 982 983 1122 } 1123 else { 1124 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(pname)" ); 1125 return; 1126 } 1127 break; 984 1128 case GL_T: 985 1129 if (pname==GL_TEXTURE_GEN_MODE) { 986 params[0] = (GLint)texUnit->GenModeT;987 988 1130 params[0] = texUnit->GenModeT; 1131 } 1132 else if (pname==GL_OBJECT_PLANE) { 989 1133 params[0] = (GLint) texUnit->ObjectPlaneT[0]; 990 1134 params[1] = (GLint) texUnit->ObjectPlaneT[1]; 991 1135 params[2] = (GLint) texUnit->ObjectPlaneT[2]; 992 1136 params[3] = (GLint) texUnit->ObjectPlaneT[3]; 993 994 1137 } 1138 else if (pname==GL_EYE_PLANE) { 995 1139 params[0] = (GLint) texUnit->EyePlaneT[0]; 996 1140 params[1] = (GLint) texUnit->EyePlaneT[1]; 997 1141 params[2] = (GLint) texUnit->EyePlaneT[2]; 998 1142 params[3] = (GLint) texUnit->EyePlaneT[3]; 999 1000 1001 1002 1003 1004 1143 } 1144 else { 1145 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(pname)" ); 1146 return; 1147 } 1148 break; 1005 1149 case GL_R: 1006 1150 if (pname==GL_TEXTURE_GEN_MODE) { 1007 params[0] = (GLint)texUnit->GenModeR;1008 1009 1151 params[0] = texUnit->GenModeR; 1152 } 1153 else if (pname==GL_OBJECT_PLANE) { 1010 1154 params[0] = (GLint) texUnit->ObjectPlaneR[0]; 1011 1155 params[1] = (GLint) texUnit->ObjectPlaneR[1]; 1012 1156 params[2] = (GLint) texUnit->ObjectPlaneR[2]; 1013 1157 params[3] = (GLint) texUnit->ObjectPlaneR[3]; 1014 1015 1158 } 1159 else if (pname==GL_EYE_PLANE) { 1016 1160 params[0] = (GLint) texUnit->EyePlaneR[0]; 1017 1161 params[1] = (GLint) texUnit->EyePlaneR[1]; 1018 1162 params[2] = (GLint) texUnit->EyePlaneR[2]; 1019 1163 params[3] = (GLint) texUnit->EyePlaneR[3]; 1020 1021 1022 1023 1024 1025 1164 } 1165 else { 1166 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(pname)" ); 1167 return; 1168 } 1169 break; 1026 1170 case GL_Q: 1027 1171 if (pname==GL_TEXTURE_GEN_MODE) { 1028 params[0] = (GLint)texUnit->GenModeQ;1029 1030 1172 params[0] = texUnit->GenModeQ; 1173 } 1174 else if (pname==GL_OBJECT_PLANE) { 1031 1175 params[0] = (GLint) texUnit->ObjectPlaneQ[0]; 1032 1176 params[1] = (GLint) texUnit->ObjectPlaneQ[1]; 1033 1177 params[2] = (GLint) texUnit->ObjectPlaneQ[2]; 1034 1178 params[3] = (GLint) texUnit->ObjectPlaneQ[3]; 1035 1036 1179 } 1180 else if (pname==GL_EYE_PLANE) { 1037 1181 params[0] = (GLint) texUnit->EyePlaneQ[0]; 1038 1182 params[1] = (GLint) texUnit->EyePlaneQ[1]; 1039 1183 params[2] = (GLint) texUnit->EyePlaneQ[2]; 1040 1184 params[3] = (GLint) texUnit->EyePlaneQ[3]; 1041 1042 1043 1044 1045 1046 1185 } 1186 else { 1187 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(pname)" ); 1188 return; 1189 } 1190 break; 1047 1191 default: 1048 1192 gl_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(coord)" ); 1049 1193 return; 1050 1194 } 1051 1195 } … … 1053 1197 1054 1198 /* GL_ARB_multitexture */ 1055 void gl_ActiveTexture( GLcontext *ctx, GLenum target ) 1056 { 1199 void 1200 _mesa_ActiveTextureARB( GLenum target ) 1201 { 1202 GET_CURRENT_CONTEXT(ctx); 1057 1203 GLint maxUnits = ctx->Const.MaxTextureUnits; 1058 1204 … … 1061 1207 if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) 1062 1208 fprintf(stderr, "glActiveTexture %s\n", 1063 1209 gl_lookup_enum_by_nr(target)); 1064 1210 1065 1211 if (target >= GL_TEXTURE0_ARB && target < GL_TEXTURE0_ARB + maxUnits) { … … 1078 1224 1079 1225 /* GL_ARB_multitexture */ 1080 void gl_ClientActiveTexture( GLcontext *ctx, GLenum target ) 1081 { 1226 void 1227 _mesa_ClientActiveTextureARB( GLenum target ) 1228 { 1229 GET_CURRENT_CONTEXT(ctx); 1082 1230 GLint maxUnits = ctx->Const.MaxTextureUnits; 1083 1231 … … 1155 1303 /* 1156 1304 * This is called by gl_update_state() if the NEW_TEXTURING bit in 1157 * ctx->NewState is unit.1305 * ctx->NewState is set. 1158 1306 */ 1159 1307 void gl_update_dirty_texobjs( GLcontext *ctx )
Note:
See TracChangeset
for help on using the changeset viewer.