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); |