Subject: RE: X under netbsd/dreamcast
To: Port-Dreamcast <port-dreamcast@netbsd.org>
From: Michael Robinson <mhr_54@cox.net>
List: port-dreamcast
Date: 02/07/2003 22:31:40
What's VRAM?
Thanks,
Michael
-----Original Message-----
From: port-dreamcast-owner@netbsd.org
[mailto:port-dreamcast-owner@netbsd.org]On Behalf Of Yasushi Oshima
Sent: Wednesday, February 05, 2003 7:06 AM
To: port-dreamcast@netbsd.org
Subject: Re: X under netbsd/dreamcast
Marcus Comstedt <marcus@mc.pp.se> wrote:
>> Do you have some simple example on how to mmap the framebuffer?
>
> IIRC, it was something along the lines of
>
> int fd;
> unsinged short *ptr;
> int gfx_mode = WSDISPLAYIO_MODE_MAPPED;
> int text_mode = WSDISPLAYIO_MODE_EMUL;
>
> /* Open the device */
> fd = open("/dev/ttyE0", O_RDWR);
>
> /* Switch to graphics mode */
> ioctl(fd, WSDISPLAYIO_SMODE, &gfx_mode);
>
> /* Map the framebuffer */
> ptr = mmap(NULL, 640*480*2, PROT_READ|PROT_WRITE, MAP_SHARED,
> fd, 0);
>
> /* Draw on screen using ptr...*/
>
> /* Go back to text mode (don't forget this!) */
> ioctl(fd, WSDISPLAYIO_SMODE, &text_mode);
>
Does this work fine under the current kernel?
I'm trying to access VRAM like this now, but it does not work
on my Dreamcast.
mmap(2) returned with an address (it is 0x20410000), however
the process became hangup when accessing this area.
unsigned short x;
if (ioctl(fd, WSDISPLAYIO_SMODE, &gfx_mode) < 0)
err(1,"ioctl");
ptr = mmap(NULL, 640*480*2, PROT_READ|PROT_WRITE, MAP_SHARED,
fd, 0);
if ( ptr == MAP_FAILED) {
ioctl(fd, WSDISPLAYIO_SMODE, &text_mode);
err(1,"mmap");
}
x = *ptr; /* <------ hangup here ------- */
ioctl ( fd, WSDISPLAYIO_SMODE, &text_mode);
print ("addr = %p\n", ptr);
print ("*addr = %x\n", x);
The CPU load of this process became about 100% by top(1).
| PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
| 835 root 64 0 144K 64K RUN 1:23 99.43% 97.95% pvrtest
When hit Ctrl-C, this process has terminated.
Console has been still graphics mode after terminating.
I use 1.6N kernel (cross built on NetBSD/i386 at Feb 4).
Does anybody know this?
Thanks.
--
Yasushi Oshima