Mercurial > sdl-ios-xcode
comparison src/video/ataricommon/SDL_atarigl.c @ 1005:2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
author | Patrice Mandin <patmandin@gmail.com> |
---|---|
date | Sat, 04 Dec 2004 20:53:58 +0000 |
parents | ece5ab8acd1c |
children | 1901fea5edac |
comparison
equal
deleted
inserted
replaced
1004:d1cd674b2ecd | 1005:2ab1cb02a44e |
---|---|
423 } | 423 } |
424 | 424 |
425 /* Init OpenGL context using OSMesa */ | 425 /* Init OpenGL context using OSMesa */ |
426 gl_convert = ConvertNull; | 426 gl_convert = ConvertNull; |
427 gl_copyshadow = CopyShadowNull; | 427 gl_copyshadow = CopyShadowNull; |
428 gl_upsidedown = SDL_FALSE; | |
428 | 429 |
429 pixel_format = current->format; | 430 pixel_format = current->format; |
430 redmask = pixel_format->Rmask; | 431 redmask = pixel_format->Rmask; |
431 switch (pixel_format->BitsPerPixel) { | 432 switch (pixel_format->BitsPerPixel) { |
432 case 15: | 433 case 15: |
537 } | 538 } |
538 | 539 |
539 /* Init OpenGL context using OSMesa */ | 540 /* Init OpenGL context using OSMesa */ |
540 gl_convert = ConvertNull; | 541 gl_convert = ConvertNull; |
541 gl_copyshadow = CopyShadowNull; | 542 gl_copyshadow = CopyShadowNull; |
543 gl_upsidedown = SDL_FALSE; | |
542 | 544 |
543 pixel_format = current->format; | 545 pixel_format = current->format; |
544 redmask = pixel_format->Rmask; | 546 redmask = pixel_format->Rmask; |
545 switch (pixel_format->BitsPerPixel) { | 547 switch (pixel_format->BitsPerPixel) { |
546 case 15: | 548 case 15: |
554 gl_copyshadow = CopyShadowRGBTo565; | 556 gl_copyshadow = CopyShadowRGBTo565; |
555 gl_convert = Convert565To555le; | 557 gl_convert = Convert565To555le; |
556 } | 558 } |
557 } else { | 559 } else { |
558 gl_pixelsize = 4; | 560 gl_pixelsize = 4; |
561 gl_upsidedown = SDL_TRUE; | |
559 osmesa_format = OSMESA_ARGB; | 562 osmesa_format = OSMESA_ARGB; |
560 if (redmask == 31<<10) { | 563 if (redmask == 31<<10) { |
561 gl_copyshadow = CopyShadow8888To555; | 564 gl_copyshadow = CopyShadow8888To555; |
562 } else { | 565 } else { |
563 gl_copyshadow = CopyShadow8888To565; | 566 gl_copyshadow = CopyShadow8888To565; |
575 /* 565, little endian, unsupported */ | 578 /* 565, little endian, unsupported */ |
576 gl_convert = Convert565le; | 579 gl_convert = Convert565le; |
577 } | 580 } |
578 } else { | 581 } else { |
579 gl_pixelsize = 4; | 582 gl_pixelsize = 4; |
583 gl_upsidedown = SDL_TRUE; | |
580 osmesa_format = OSMESA_ARGB; | 584 osmesa_format = OSMESA_ARGB; |
581 gl_copyshadow = CopyShadow8888To565; | 585 gl_copyshadow = CopyShadow8888To565; |
582 if (redmask != 31<<11) { | 586 if (redmask != 31<<11) { |
583 /* 565, little endian, unsupported */ | 587 /* 565, little endian, unsupported */ |
584 gl_convert = Convert565le; | 588 gl_convert = Convert565le; |
593 if (redmask != 255<<16) { | 597 if (redmask != 255<<16) { |
594 gl_copyshadow = CopyShadowRGBSwap; | 598 gl_copyshadow = CopyShadowRGBSwap; |
595 } | 599 } |
596 } else { | 600 } else { |
597 gl_copyshadow = CopyShadowDirect; | 601 gl_copyshadow = CopyShadowDirect; |
602 gl_upsidedown = SDL_TRUE; | |
598 if (redmask == 255<<16) { | 603 if (redmask == 255<<16) { |
599 osmesa_format = OSMESA_RGB; | 604 osmesa_format = OSMESA_RGB; |
600 } else { | 605 } else { |
601 osmesa_format = OSMESA_BGR; | 606 osmesa_format = OSMESA_BGR; |
602 } | 607 } |
614 } else if (redmask == 255<<24) { | 619 } else if (redmask == 255<<24) { |
615 gl_convert = CopyShadowRGBToRGBA; | 620 gl_convert = CopyShadowRGBToRGBA; |
616 } | 621 } |
617 } else { | 622 } else { |
618 gl_pixelsize = 4; | 623 gl_pixelsize = 4; |
624 gl_upsidedown = SDL_TRUE; | |
619 gl_copyshadow = CopyShadowDirect; | 625 gl_copyshadow = CopyShadowDirect; |
620 if (redmask == 255<<16) { | 626 if (redmask == 255<<16) { |
621 osmesa_format = OSMESA_ARGB; | 627 osmesa_format = OSMESA_ARGB; |
622 } else if (redmask == 255<<8) { | 628 } else if (redmask == 255<<8) { |
623 osmesa_format = OSMESA_BGRA; | 629 osmesa_format = OSMESA_BGRA; |
683 | 689 |
684 srcline = gl_shadow; | 690 srcline = gl_shadow; |
685 srcpitch = surface->w * gl_pixelsize; | 691 srcpitch = surface->w * gl_pixelsize; |
686 dstline = surface->pixels; | 692 dstline = surface->pixels; |
687 dstpitch = surface->pitch; | 693 dstpitch = surface->pitch; |
694 if (gl_upsidedown) { | |
695 srcline += (surface->h-1)*srcpitch; | |
696 srcpitch = -srcpitch; | |
697 } | |
688 | 698 |
689 for (y=0; y<surface->h; y++) { | 699 for (y=0; y<surface->h; y++) { |
690 memcpy(dstline, srcline, srcpitch); | 700 memcpy(dstline, srcline, srcpitch); |
691 | 701 |
692 srcline += srcpitch; | 702 srcline += srcpitch; |
702 | 712 |
703 srcline = (Uint8 *)gl_shadow; | 713 srcline = (Uint8 *)gl_shadow; |
704 srcpitch = surface->w * gl_pixelsize; | 714 srcpitch = surface->w * gl_pixelsize; |
705 dstline = surface->pixels; | 715 dstline = surface->pixels; |
706 dstpitch = surface->pitch >>1; | 716 dstpitch = surface->pitch >>1; |
717 if (gl_upsidedown) { | |
718 srcline += (surface->h-1)*srcpitch; | |
719 srcpitch = -srcpitch; | |
720 } | |
707 | 721 |
708 for (y=0; y<surface->h; y++) { | 722 for (y=0; y<surface->h; y++) { |
709 srccol = srcline; | 723 srccol = srcline; |
710 dstcol = dstline; | 724 dstcol = dstline; |
711 for (x=0; x<surface->w; x++) { | 725 for (x=0; x<surface->w; x++) { |
730 | 744 |
731 srcline = (Uint8 *)gl_shadow; | 745 srcline = (Uint8 *)gl_shadow; |
732 srcpitch = surface->w * gl_pixelsize; | 746 srcpitch = surface->w * gl_pixelsize; |
733 dstline = surface->pixels; | 747 dstline = surface->pixels; |
734 dstpitch = surface->pitch >>1; | 748 dstpitch = surface->pitch >>1; |
749 if (gl_upsidedown) { | |
750 srcline += (surface->h-1)*srcpitch; | |
751 srcpitch = -srcpitch; | |
752 } | |
735 | 753 |
736 for (y=0; y<surface->h; y++) { | 754 for (y=0; y<surface->h; y++) { |
737 srccol = srcline; | 755 srccol = srcline; |
738 dstcol = dstline; | 756 dstcol = dstline; |
739 | 757 |
759 | 777 |
760 srcline = (Uint8 *)gl_shadow; | 778 srcline = (Uint8 *)gl_shadow; |
761 srcpitch = surface->w * gl_pixelsize; | 779 srcpitch = surface->w * gl_pixelsize; |
762 dstline = surface->pixels; | 780 dstline = surface->pixels; |
763 dstpitch = surface->pitch; | 781 dstpitch = surface->pitch; |
782 if (gl_upsidedown) { | |
783 srcline += (surface->h-1)*srcpitch; | |
784 srcpitch = -srcpitch; | |
785 } | |
764 | 786 |
765 for (y=0; y<surface->h; y++) { | 787 for (y=0; y<surface->h; y++) { |
766 srccol = srcline; | 788 srccol = srcline; |
767 dstcol = dstline; | 789 dstcol = dstline; |
768 | 790 |
786 | 808 |
787 srcline = (Uint8 *)gl_shadow; | 809 srcline = (Uint8 *)gl_shadow; |
788 srcpitch = surface->w * gl_pixelsize; | 810 srcpitch = surface->w * gl_pixelsize; |
789 dstline = surface->pixels; | 811 dstline = surface->pixels; |
790 dstpitch = surface->pitch >>2; | 812 dstpitch = surface->pitch >>2; |
813 if (gl_upsidedown) { | |
814 srcline += (surface->h-1)*srcpitch; | |
815 srcpitch = -srcpitch; | |
816 } | |
791 | 817 |
792 for (y=0; y<surface->h; y++) { | 818 for (y=0; y<surface->h; y++) { |
793 srccol = srcline; | 819 srccol = srcline; |
794 dstcol = dstline; | 820 dstcol = dstline; |
795 | 821 |
816 | 842 |
817 srcline = (Uint8 *)gl_shadow; | 843 srcline = (Uint8 *)gl_shadow; |
818 srcpitch = surface->w * gl_pixelsize; | 844 srcpitch = surface->w * gl_pixelsize; |
819 dstline = surface->pixels; | 845 dstline = surface->pixels; |
820 dstpitch = surface->pitch >>2; | 846 dstpitch = surface->pitch >>2; |
847 if (gl_upsidedown) { | |
848 srcline += (surface->h-1)*srcpitch; | |
849 srcpitch = -srcpitch; | |
850 } | |
821 | 851 |
822 for (y=0; y<surface->h; y++) { | 852 for (y=0; y<surface->h; y++) { |
823 srccol = srcline; | 853 srccol = srcline; |
824 dstcol = dstline; | 854 dstcol = dstline; |
825 | 855 |
846 | 876 |
847 srcline = (Uint8 *)gl_shadow; | 877 srcline = (Uint8 *)gl_shadow; |
848 srcpitch = surface->w * gl_pixelsize; | 878 srcpitch = surface->w * gl_pixelsize; |
849 dstline = surface->pixels; | 879 dstline = surface->pixels; |
850 dstpitch = surface->pitch >>2; | 880 dstpitch = surface->pitch >>2; |
881 if (gl_upsidedown) { | |
882 srcline += (surface->h-1)*srcpitch; | |
883 srcpitch = -srcpitch; | |
884 } | |
851 | 885 |
852 for (y=0; y<surface->h; y++) { | 886 for (y=0; y<surface->h; y++) { |
853 srccol = srcline; | 887 srccol = srcline; |
854 dstcol = dstline; | 888 dstcol = dstline; |
855 | 889 |
876 | 910 |
877 srcline = (Uint8 *)gl_shadow; | 911 srcline = (Uint8 *)gl_shadow; |
878 srcpitch = surface->w * gl_pixelsize; | 912 srcpitch = surface->w * gl_pixelsize; |
879 dstline = surface->pixels; | 913 dstline = surface->pixels; |
880 dstpitch = surface->pitch >>2; | 914 dstpitch = surface->pitch >>2; |
915 if (gl_upsidedown) { | |
916 srcline += (surface->h-1)*srcpitch; | |
917 srcpitch = -srcpitch; | |
918 } | |
881 | 919 |
882 for (y=0; y<surface->h; y++) { | 920 for (y=0; y<surface->h; y++) { |
883 srccol = srcline; | 921 srccol = srcline; |
884 dstcol = dstline; | 922 dstcol = dstline; |
885 | 923 |
906 | 944 |
907 srcline = (Uint32 *)gl_shadow; | 945 srcline = (Uint32 *)gl_shadow; |
908 srcpitch = (surface->w * gl_pixelsize) >>2; | 946 srcpitch = (surface->w * gl_pixelsize) >>2; |
909 dstline = surface->pixels; | 947 dstline = surface->pixels; |
910 dstpitch = surface->pitch >>1; | 948 dstpitch = surface->pitch >>1; |
949 if (gl_upsidedown) { | |
950 srcline += (surface->h-1)*srcpitch; | |
951 srcpitch = -srcpitch; | |
952 } | |
911 | 953 |
912 for (y=0; y<surface->h; y++) { | 954 for (y=0; y<surface->h; y++) { |
913 srccol = srcline; | 955 srccol = srcline; |
914 dstcol = dstline; | 956 dstcol = dstline; |
915 for (x=0; x<surface->w; x++) { | 957 for (x=0; x<surface->w; x++) { |
936 | 978 |
937 srcline = (Uint32 *)gl_shadow; | 979 srcline = (Uint32 *)gl_shadow; |
938 srcpitch = (surface->w * gl_pixelsize) >> 2; | 980 srcpitch = (surface->w * gl_pixelsize) >> 2; |
939 dstline = surface->pixels; | 981 dstline = surface->pixels; |
940 dstpitch = surface->pitch >>1; | 982 dstpitch = surface->pitch >>1; |
983 if (gl_upsidedown) { | |
984 srcline += (surface->h-1)*srcpitch; | |
985 srcpitch = -srcpitch; | |
986 } | |
941 | 987 |
942 for (y=0; y<surface->h; y++) { | 988 for (y=0; y<surface->h; y++) { |
943 srccol = srcline; | 989 srccol = srcline; |
944 dstcol = dstline; | 990 dstcol = dstline; |
945 | 991 |