Subversion Repositories Kolibri OS

Rev

Rev 4389 | Rev 4557 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4389 Rev 4398
Line 744... Line 744...
744
    rect_t winrc;
744
    rect_t winrc;
745
    u32    slot;
745
    u32    slot;
746
    int    ret=0;
746
    int    ret=0;
747
 
747
 
Line 748... Line -...
748
     if(mask->handle == -2)
-
 
749
     {
-
 
750
        printf("%s handle %d\n", __FUNCTION__, mask->handle);
-
 
751
        return 0;
-
 
752
     }
-
 
753
 
-
 
754
    obj = drm_gem_object_lookup(dev, file, mask->handle);
748
    obj = drm_gem_object_lookup(dev, file, mask->handle);
755
    if (obj == NULL)
749
    if (obj == NULL)
756
        return -ENOENT;
750
        return -ENOENT;
Line 757... Line 751...
757
 
751
 
Line 825... Line 819...
825
            :"xmm6");
819
            :"xmm6");
826
 
820
 
Line 827... Line 821...
827
            while( tmp_h--)
821
            while( tmp_h--)
828
            {
822
            {
829
                int tmp_w = mask->bo_pitch;
823
                int tmp_w = mask->width;
Line 830... Line 824...
830
 
824
 
831
                u8* tmp_src = src_offset;
825
                u8* tmp_src = src_offset;
Line 832... Line 826...
832
                u8* tmp_dst = dst_offset;
826
                u8* tmp_dst = dst_offset;
Line 873... Line 867...
873
                    tmp_src += 32;
867
                    tmp_src += 32;
874
                    tmp_dst += 32;
868
                    tmp_dst += 32;
875
                }
869
                }
876
 
870
 
Line 877... Line 871...
877
                while( tmp_w > 0 )
871
                if( tmp_w >= 16 )
878
                {
872
                {
879
                    __asm__ __volatile__ (
873
                    __asm__ __volatile__ (
880
                    "movdqu     (%0),   %%xmm0            \n"
874
                    "movdqu     (%0),   %%xmm0            \n"
881
                    "pcmpeqb    %%xmm6, %%xmm0            \n"
875
                    "pcmpeqb    %%xmm6, %%xmm0            \n"
882
                    "movdqa     %%xmm0,   (%%edi)         \n"
876
                    "movdqa     %%xmm0,   (%%edi)         \n"
Line 885... Line 879...
885
                    tmp_w -= 16;
879
                    tmp_w -= 16;
886
                    tmp_src += 16;
880
                    tmp_src += 16;
887
                    tmp_dst += 16;
881
                    tmp_dst += 16;
888
                }
882
                }
889
            };
883
 
-
 
884
                if( tmp_w >= 8 )
-
 
885
                {
-
 
886
                    __asm__ __volatile__ (
-
 
887
                    "movq       (%0),   %%xmm0            \n"
-
 
888
                    "pcmpeqb    %%xmm6, %%xmm0            \n"
-
 
889
                    "movq       %%xmm0,   (%%edi)         \n"
-
 
890
                    :: "r" (tmp_src), "D" (tmp_dst)
-
 
891
                    :"xmm0");
-
 
892
                    tmp_w -= 8;
-
 
893
                    tmp_src += 8;
-
 
894
                    tmp_dst += 8;
-
 
895
                }
-
 
896
                if( tmp_w >= 4 )
-
 
897
                {
-
 
898
                    __asm__ __volatile__ (
-
 
899
                    "movd       (%0),   %%xmm0            \n"
-
 
900
                    "pcmpeqb    %%xmm6, %%xmm0            \n"
-
 
901
                    "movd       %%xmm0,   (%%edi)         \n"
-
 
902
                    :: "r" (tmp_src), "D" (tmp_dst)
-
 
903
                    :"xmm0");
-
 
904
                    tmp_w -= 4;
-
 
905
                    tmp_src += 4;
-
 
906
                    tmp_dst += 4;
-
 
907
                }
-
 
908
                while(tmp_w--)
-
 
909
                    *tmp_dst++ = (*tmp_src++ == (u8)slot) ? 0xFF:0x00;
-
 
910
            };
890
        };
911
        };
891
        safe_sti(ifl);
912
        safe_sti(ifl);
892
 
913
 
Line 893... Line 914...
893
        ret = i915_gem_object_set_to_gtt_domain(to_intel_bo(obj), false);
914
        ret = i915_gem_object_set_to_gtt_domain(to_intel_bo(obj), false);