comparison src/video/ataricommon/SDL_atarigl.c @ 1002:13aa96c76e86

Wrong pixel size for source buffer for old drivers
author Patrice Mandin <patmandin@gmail.com>
date Thu, 02 Dec 2004 13:45:29 +0000
parents fbeac9312843
children ece5ab8acd1c
comparison
equal deleted inserted replaced
1001:70bfe658442c 1002:13aa96c76e86
543 pixel_format = current->format; 543 pixel_format = current->format;
544 redmask = pixel_format->Rmask; 544 redmask = pixel_format->Rmask;
545 switch (pixel_format->BitsPerPixel) { 545 switch (pixel_format->BitsPerPixel) {
546 case 15: 546 case 15:
547 /* 15 bits unsupported */ 547 /* 15 bits unsupported */
548 gl_pixelsize = 2;
549 if (tinygl_present) { 548 if (tinygl_present) {
549 gl_pixelsize = 3;
550 osmesa_format = VDI_RGB; 550 osmesa_format = VDI_RGB;
551 if (redmask == 31<<10) { 551 if (redmask == 31<<10) {
552 gl_copyshadow = CopyShadowRGBTo555; 552 gl_copyshadow = CopyShadowRGBTo555;
553 } else { 553 } else {
554 gl_copyshadow = CopyShadowRGBTo565; 554 gl_copyshadow = CopyShadowRGBTo565;
555 gl_convert = Convert565To555le; 555 gl_convert = Convert565To555le;
556 } 556 }
557 } else { 557 } else {
558 gl_pixelsize = 4;
558 osmesa_format = OSMESA_ARGB; 559 osmesa_format = OSMESA_ARGB;
559 if (redmask == 31<<10) { 560 if (redmask == 31<<10) {
560 gl_copyshadow = CopyShadow8888To555; 561 gl_copyshadow = CopyShadow8888To555;
561 } else { 562 } else {
562 gl_copyshadow = CopyShadow8888To565; 563 gl_copyshadow = CopyShadow8888To565;
564 } 565 }
565 } 566 }
566 break; 567 break;
567 case 16: 568 case 16:
568 /* 16 bits unsupported */ 569 /* 16 bits unsupported */
569 gl_pixelsize = 2;
570 if (tinygl_present) { 570 if (tinygl_present) {
571 gl_pixelsize = 3;
571 osmesa_format = VDI_RGB; 572 osmesa_format = VDI_RGB;
572 gl_copyshadow = CopyShadowRGBTo565; 573 gl_copyshadow = CopyShadowRGBTo565;
573 if (redmask != 31<<11) { 574 if (redmask != 31<<11) {
574 /* 565, little endian, unsupported */ 575 /* 565, little endian, unsupported */
575 gl_convert = Convert565le; 576 gl_convert = Convert565le;
576 } 577 }
577 } else { 578 } else {
579 gl_pixelsize = 4;
578 osmesa_format = OSMESA_ARGB; 580 osmesa_format = OSMESA_ARGB;
579 gl_copyshadow = CopyShadow8888To565; 581 gl_copyshadow = CopyShadow8888To565;
580 if (redmask != 31<<11) { 582 if (redmask != 31<<11) {
581 /* 565, little endian, unsupported */ 583 /* 565, little endian, unsupported */
582 gl_convert = Convert565le; 584 gl_convert = Convert565le;
599 osmesa_format = OSMESA_BGR; 601 osmesa_format = OSMESA_BGR;
600 } 602 }
601 } 603 }
602 break; 604 break;
603 case 32: 605 case 32:
604 gl_pixelsize = 4;
605 if (tinygl_present) { 606 if (tinygl_present) {
607 gl_pixelsize = 3;
606 osmesa_format = VDI_RGB; 608 osmesa_format = VDI_RGB;
607 gl_copyshadow = CopyShadowRGBToARGB; 609 gl_copyshadow = CopyShadowRGBToARGB;
608 if (redmask == 255) { 610 if (redmask == 255) {
609 gl_convert = CopyShadowRGBToABGR; 611 gl_convert = CopyShadowRGBToABGR;
610 } else if (redmask == 255<<8) { 612 } else if (redmask == 255<<8) {
611 gl_convert = CopyShadowRGBToBGRA; 613 gl_convert = CopyShadowRGBToBGRA;
612 } else if (redmask == 255<<24) { 614 } else if (redmask == 255<<24) {
613 gl_convert = CopyShadowRGBToRGBA; 615 gl_convert = CopyShadowRGBToRGBA;
614 } 616 }
615 } else { 617 } else {
618 gl_pixelsize = 4;
616 gl_copyshadow = CopyShadowDirect; 619 gl_copyshadow = CopyShadowDirect;
617 if (redmask == 255<<16) { 620 if (redmask == 255<<16) {
618 osmesa_format = OSMESA_ARGB; 621 osmesa_format = OSMESA_ARGB;
619 } else if (redmask == 255<<8) { 622 } else if (redmask == 255<<8) {
620 osmesa_format = OSMESA_BGRA; 623 osmesa_format = OSMESA_BGRA;
696 int x,y, srcpitch, dstpitch; 699 int x,y, srcpitch, dstpitch;
697 Uint16 *dstline, *dstcol; 700 Uint16 *dstline, *dstcol;
698 Uint8 *srcline, *srccol; 701 Uint8 *srcline, *srccol;
699 702
700 srcline = (Uint8 *)gl_shadow; 703 srcline = (Uint8 *)gl_shadow;
701 srcpitch = surface->w *3; 704 srcpitch = surface->w * gl_pixelsize;
702 dstline = surface->pixels; 705 dstline = surface->pixels;
703 dstpitch = surface->pitch >>1; 706 dstpitch = surface->pitch >>1;
704 707
705 for (y=0; y<surface->h; y++) { 708 for (y=0; y<surface->h; y++) {
706 srccol = srcline; 709 srccol = srcline;
724 int x,y, srcpitch, dstpitch; 727 int x,y, srcpitch, dstpitch;
725 Uint16 *dstline, *dstcol; 728 Uint16 *dstline, *dstcol;
726 Uint8 *srcline, *srccol; 729 Uint8 *srcline, *srccol;
727 730
728 srcline = (Uint8 *)gl_shadow; 731 srcline = (Uint8 *)gl_shadow;
729 srcpitch = surface->w *3; 732 srcpitch = surface->w * gl_pixelsize;
730 dstline = surface->pixels; 733 dstline = surface->pixels;
731 dstpitch = surface->pitch >>1; 734 dstpitch = surface->pitch >>1;
732 735
733 for (y=0; y<surface->h; y++) { 736 for (y=0; y<surface->h; y++) {
734 srccol = srcline; 737 srccol = srcline;
753 int x,y, srcpitch, dstpitch; 756 int x,y, srcpitch, dstpitch;
754 Uint8 *dstline, *dstcol; 757 Uint8 *dstline, *dstcol;
755 Uint8 *srcline, *srccol; 758 Uint8 *srcline, *srccol;
756 759
757 srcline = (Uint8 *)gl_shadow; 760 srcline = (Uint8 *)gl_shadow;
758 srcpitch = surface->w *3; 761 srcpitch = surface->w * gl_pixelsize;
759 dstline = surface->pixels; 762 dstline = surface->pixels;
760 dstpitch = surface->pitch; 763 dstpitch = surface->pitch;
761 764
762 for (y=0; y<surface->h; y++) { 765 for (y=0; y<surface->h; y++) {
763 srccol = srcline; 766 srccol = srcline;
780 int x,y, srcpitch, dstpitch; 783 int x,y, srcpitch, dstpitch;
781 Uint32 *dstline, *dstcol; 784 Uint32 *dstline, *dstcol;
782 Uint8 *srcline, *srccol; 785 Uint8 *srcline, *srccol;
783 786
784 srcline = (Uint8 *)gl_shadow; 787 srcline = (Uint8 *)gl_shadow;
785 srcpitch = surface->w *3; 788 srcpitch = surface->w * gl_pixelsize;
786 dstline = surface->pixels; 789 dstline = surface->pixels;
787 dstpitch = surface->pitch >>2; 790 dstpitch = surface->pitch >>2;
788 791
789 for (y=0; y<surface->h; y++) { 792 for (y=0; y<surface->h; y++) {
790 srccol = srcline; 793 srccol = srcline;
810 int x,y, srcpitch, dstpitch; 813 int x,y, srcpitch, dstpitch;
811 Uint32 *dstline, *dstcol; 814 Uint32 *dstline, *dstcol;
812 Uint8 *srcline, *srccol; 815 Uint8 *srcline, *srccol;
813 816
814 srcline = (Uint8 *)gl_shadow; 817 srcline = (Uint8 *)gl_shadow;
815 srcpitch = surface->w *3; 818 srcpitch = surface->w * gl_pixelsize;
816 dstline = surface->pixels; 819 dstline = surface->pixels;
817 dstpitch = surface->pitch >>2; 820 dstpitch = surface->pitch >>2;
818 821
819 for (y=0; y<surface->h; y++) { 822 for (y=0; y<surface->h; y++) {
820 srccol = srcline; 823 srccol = srcline;
840 int x,y, srcpitch, dstpitch; 843 int x,y, srcpitch, dstpitch;
841 Uint32 *dstline, *dstcol; 844 Uint32 *dstline, *dstcol;
842 Uint8 *srcline, *srccol; 845 Uint8 *srcline, *srccol;
843 846
844 srcline = (Uint8 *)gl_shadow; 847 srcline = (Uint8 *)gl_shadow;
845 srcpitch = surface->w *3; 848 srcpitch = surface->w * gl_pixelsize;
846 dstline = surface->pixels; 849 dstline = surface->pixels;
847 dstpitch = surface->pitch >>2; 850 dstpitch = surface->pitch >>2;
848 851
849 for (y=0; y<surface->h; y++) { 852 for (y=0; y<surface->h; y++) {
850 srccol = srcline; 853 srccol = srcline;
870 int x,y, srcpitch, dstpitch; 873 int x,y, srcpitch, dstpitch;
871 Uint32 *dstline, *dstcol; 874 Uint32 *dstline, *dstcol;
872 Uint8 *srcline, *srccol; 875 Uint8 *srcline, *srccol;
873 876
874 srcline = (Uint8 *)gl_shadow; 877 srcline = (Uint8 *)gl_shadow;
875 srcpitch = surface->w *3; 878 srcpitch = surface->w * gl_pixelsize;
876 dstline = surface->pixels; 879 dstline = surface->pixels;
877 dstpitch = surface->pitch >>2; 880 dstpitch = surface->pitch >>2;
878 881
879 for (y=0; y<surface->h; y++) { 882 for (y=0; y<surface->h; y++) {
880 srccol = srcline; 883 srccol = srcline;
900 int x,y, srcpitch, dstpitch; 903 int x,y, srcpitch, dstpitch;
901 Uint16 *dstline, *dstcol; 904 Uint16 *dstline, *dstcol;
902 Uint32 *srcline, *srccol; 905 Uint32 *srcline, *srccol;
903 906
904 srcline = (Uint32 *)gl_shadow; 907 srcline = (Uint32 *)gl_shadow;
905 srcpitch = surface->w; 908 srcpitch = (surface->w * gl_pixelsize) >>2;
906 dstline = surface->pixels; 909 dstline = surface->pixels;
907 dstpitch = surface->pitch >>1; 910 dstpitch = surface->pitch >>1;
908 911
909 for (y=0; y<surface->h; y++) { 912 for (y=0; y<surface->h; y++) {
910 srccol = srcline; 913 srccol = srcline;
930 int x,y, srcpitch, dstpitch; 933 int x,y, srcpitch, dstpitch;
931 Uint16 *dstline, *dstcol; 934 Uint16 *dstline, *dstcol;
932 Uint32 *srcline, *srccol; 935 Uint32 *srcline, *srccol;
933 936
934 srcline = (Uint32 *)gl_shadow; 937 srcline = (Uint32 *)gl_shadow;
935 srcpitch = surface->w; 938 srcpitch = (surface->w * gl_pixelsize) >> 2;
936 dstline = surface->pixels; 939 dstline = surface->pixels;
937 dstpitch = surface->pitch >>1; 940 dstpitch = surface->pitch >>1;
938 941
939 for (y=0; y<surface->h; y++) { 942 for (y=0; y<surface->h; y++) {
940 srccol = srcline; 943 srccol = srcline;