From: //o//annabee on
P� Tue, 15 Jan 2008 21:03:09 +0100, skrev //\\o//\\annabee <w(a)www.akow>:

> P� Tue, 15 Jan 2008 21:02:12 +0100, skrev //\\o//\\annabee <w(a)www.akow>:
>
>> P� Tue, 15 Jan 2008 20:37:26 +0100, skrev Robert Redelmeier
>> <redelm(a)ev1.net.invalid>:
>>
>>> Wolfgang Kern <nowhere(a)never.at> wrote in part:
>>>>>>>> PUSH ecx
>>>>>>>> L3:MOV eax,edi ;1 ;keep the line start
>>>>>>>> REP MOVSD ;15+ecx*4/3 = 357
>>>>>>>> ADD eax,edx ;1 ;add scan line size
>>>>>>>> DEC ebx ;1
>>>>>>>> MOV ecx,[esp] ;3
>>>>>>>> MOV edi,eax ;1
>>>>>>>> JNZ L3< ;1 ;total (357+8)*256 = 93440
>>>>>>>> POP ecx
>>>>
>>>>
>>>> So why RDTSC reported ~2'000'000 instead of ~250'000, this is
>>>> about eight times more ?
>>>> The answer might be that the BUS-speed is limited to 66 MHz
>>>> while the CPU runs on 500MHZ... and 500/66 = 7.57 = near 8.
>>>
>>> Perhaps, but if ESI is pointing at VRAM,
>>> you are asking REP MOVSD to _read_ it.
>>
>> No, its pointing at "Kesys bitmap" Must assume thats ram.
>
> Woops. Could it be a bitmap stored onship?

no.

>
>>
>> "
>>>> eax= 0 colour mask
>>>> esi= source ;btw: KESYS.bitmaps aren't stored upside down!
>>>> AND [vflag],0f0 ;clear all options
>> "
>>
>>
>>> Reading VRAM is _KNOWN_ to be extremely slow. Writing
>>> VRAM is bad enough, but reading may wait for retrace.
>>
>>>
>>> -- Robert
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>

From: //o//annabee on
P� Tue, 15 Jan 2008 21:03:53 +0100, skrev //\\o//\\annabee <w(a)www.akow>:

> P� Tue, 15 Jan 2008 21:03:09 +0100, skrev //\\o//\\annabee <w(a)www.akow>:
>
>> P� Tue, 15 Jan 2008 21:02:12 +0100, skrev //\\o//\\annabee <w(a)www.akow>:
>>
>>> P� Tue, 15 Jan 2008 20:37:26 +0100, skrev Robert Redelmeier
>>> <redelm(a)ev1.net.invalid>:
>>>
>>>> Wolfgang Kern <nowhere(a)never.at> wrote in part:
>>>>>>>>> PUSH ecx
>>>>>>>>> L3:MOV eax,edi ;1 ;keep the line start
>>>>>>>>> REP MOVSD ;15+ecx*4/3 = 357
>>>>>>>>> ADD eax,edx ;1 ;add scan line size
>>>>>>>>> DEC ebx ;1
>>>>>>>>> MOV ecx,[esp] ;3
>>>>>>>>> MOV edi,eax ;1
>>>>>>>>> JNZ L3< ;1 ;total (357+8)*256 = 93440
>>>>>>>>> POP ecx
>>>>>
>>>>>
>>>>> So why RDTSC reported ~2'000'000 instead of ~250'000, this is
>>>>> about eight times more ?
>>>>> The answer might be that the BUS-speed is limited to 66 MHz
>>>>> while the CPU runs on 500MHZ... and 500/66 = 7.57 = near 8.
>>>>
>>>> Perhaps, but if ESI is pointing at VRAM,
>>>> you are asking REP MOVSD to _read_ it.
>>>
>>> No, its pointing at "Kesys bitmap" Must assume thats ram.
>>
>> Woops. Could it be a bitmap stored onship?
>
> no.

Can you please shut up now?

>
>>
>>>
>>> "
>>>>> eax= 0 colour mask
>>>>> esi= source ;btw: KESYS.bitmaps aren't stored upside down!
>>>>> AND [vflag],0f0 ;clear all options
>>> "
>>>
>>>
>>>> Reading VRAM is _KNOWN_ to be extremely slow. Writing
>>>> VRAM is bad enough, but reading may wait for retrace.
>>>
>>>>
>>>> -- Robert
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>

From: //o//annabee on
P� Tue, 15 Jan 2008 21:08:13 +0100, skrev //\\o//\\annabee <w(a)www.akow>:

> P� Tue, 15 Jan 2008 21:03:53 +0100, skrev //\\o//\\annabee <w(a)www.akow>:
>
>> P� Tue, 15 Jan 2008 21:03:09 +0100, skrev //\\o//\\annabee <w(a)www.akow>:
>>
>>> P� Tue, 15 Jan 2008 21:02:12 +0100, skrev //\\o//\\annabee
>>> <w(a)www.akow>:
>>>
>>>> P� Tue, 15 Jan 2008 20:37:26 +0100, skrev Robert Redelmeier
>>>> <redelm(a)ev1.net.invalid>:
>>>>
>>>>> Wolfgang Kern <nowhere(a)never.at> wrote in part:
>>>>>>>>>> PUSH ecx
>>>>>>>>>> L3:MOV eax,edi ;1 ;keep the line start
>>>>>>>>>> REP MOVSD ;15+ecx*4/3 = 357
>>>>>>>>>> ADD eax,edx ;1 ;add scan line size
>>>>>>>>>> DEC ebx ;1
>>>>>>>>>> MOV ecx,[esp] ;3
>>>>>>>>>> MOV edi,eax ;1
>>>>>>>>>> JNZ L3< ;1 ;total (357+8)*256 = 93440
>>>>>>>>>> POP ecx
>>>>>>
>>>>>>
>>>>>> So why RDTSC reported ~2'000'000 instead of ~250'000, this is
>>>>>> about eight times more ?
>>>>>> The answer might be that the BUS-speed is limited to 66 MHz
>>>>>> while the CPU runs on 500MHZ... and 500/66 = 7.57 = near 8.
>>>>>
>>>>> Perhaps, but if ESI is pointing at VRAM,
>>>>> you are asking REP MOVSD to _read_ it.
>>>>
>>>> No, its pointing at "Kesys bitmap" Must assume thats ram.
>>>
>>> Woops. Could it be a bitmap stored onship?
>>
>> no.
>
> Can you please shut up now?

ahh, fck you, duuushbag!


>
>>
>>>
>>>>
>>>> "
>>>>>> eax= 0 colour mask
>>>>>> esi= source ;btw: KESYS.bitmaps aren't stored upside down!
>>>>>> AND [vflag],0f0 ;clear all options
>>>> "
>>>>
>>>>
>>>>> Reading VRAM is _KNOWN_ to be extremely slow. Writing
>>>>> VRAM is bad enough, but reading may wait for retrace.
>>>>
>>>>>
>>>>> -- Robert
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>

From: Dirk Wolfgang Glomp on
Am Tue, 15 Jan 2008 16:07:47 +0100 schrieb Wolfgang Kern:
> you'll need to scan the VESA info and find/set a linear mode,

...
push ds
pop es

mov di, OFFSET VINF ; get vesa-info(buffer to store vesa info)
mov ax, 4F00h ; es:di 256 byte
int 10h
cmp ax, 4Fh
jnz ERROR
cmp BYTE PTR[di+5], 2 ; major version number of vesa <2?
jb ERROR

lfs si, [di+0Eh] ; copy all vesa modi(pointer of modelist)
mov bx, OFFSET MODI ; buffer to store vesa modi
P1: mov ax, fs:[si] ; get the mode number
add si, 2
mov [bx], ax ; store the mode number
add bx, 2
cmp ax, 0FFFFh ; end of modelist?
jnz P1

mov si, OFFSET MODI ; scan for specific mode(with 32bit)
P2: mov cx, [si] ; get mode
add si, +2
cmp cx, 0FFFFh ; end of modelist?
jz ERROR
mov ax, 4F01h ; get mode-Info
add cx, 4000h ; mode + linear acess
mov bp, cx ; store mode number
int 10h ; es:di 256 byte
cmp ax, 4Fh
jnz ERROR
cmp WORD PTR[di+12h], MaxX
jnz P2
cmp WORD PTR[di+14h], MaxY
jnz P2
cmp BYTE PTR[di+19h], 20h ; 32 Bit per pixel?
jnz P2
and BYTE PTR[di], 80h ; linear access enable?
jz ERROR
cmp DWORD PTR[di+28h], 0 ; linear offset exist?
jz ERROR
...
-------------------------------------
ATI 9800 PRO VESA Modi(128MB)
-------------------------------------
4 8 15 16 24 32 Matrix
-------------------------------------
109 132 x 25
10A 132 x 43
130 132 x 44
182 10D 10E 10F 120 320 x 200
192 193 194 195 196 320 x 240
1A2 1A3 1A4 1A5 1A6 400 x 300
1B2 1B3 1B4 1B5 1B6 512 x 384
1C2 1C3 1C4 1C5 1C6 640 x 350
100 183 184 185 186 640 x 400
101 110 111 112 121 640 x 480
102 103 113 114 115 122 800 x 600
104 105 106 107 108 123 1024 x 768
107 119 11A 11B 124 1280 x 1024
-------------------------------------
NVIDIA GF 4 Ti4200 VESA Modi(64MB)
-------------------------------------
4 8 15 16 24 32 Matrix
-------------------------------------
108 80 x 60
109 132 x 25
10A 132 x 43
10B 132 x 50
10C 132 x 60
130 10E 10F 320 x 200
134 135 136 320 x 240
131 132 133 320 x 400
100 13D 13E 640 x 400
101 111 112 640 x 480
102 103 114 115 800 x 600
104 105 117 118 1024 x 768
106 107 11A 1280 x 1024
147 148 1400 x 1050
145 146 1600 x 1200
-------------------------------------

Dirk
From: Wolfgang Kern on

Robert Redelmeier wrote:

....

>> So why RDTSC reported ~2'000'000 instead of ~250'000, this is
>> about eight times more ?
>> The answer might be that the BUS-speed is limited to 66 MHz
>> while the CPU runs on 500MHZ... and 500/66 = 7.57 = near 8.

> Perhaps, but if ESI is pointing at VRAM,
> you are asking REP MOVSD to _read_ it.

Right, worst case are RD-modify-WR on actual screen pages,
but I have ESI point to a nonVRAM source in this test.
Reads from not current visible VRAM shouldn't be too slow.

> Reading VRAM is _KNOWN_ to be extremely slow. Writing
> VRAM is bad enough, but reading may wait for retrace.

> Proper video drivers issue scrolling commands to the
> GPU which crunches everything in an optimized manner.
> And image loads from DRAM are done by the GPU busmastering.
> Again, optimized with other graphics chores like rendering.
> Unfortuneately, I don't think the docs are easily available.

Yes, and that's why this comparision limps quite a lot.
If we strip off all vendor specific support in windoze then this test
can't be done at all (windoze default is VGA 1024*768,4 iw: "four"!).

Perhaps one day we get the required info from the vendors ...

__
wolfgang



First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4 5 6 7 8 9 10 11
Prev: A little ASM 6809 program
Next: what is rsrc.rc?