forums.ps2dev.org Forum Index forums.ps2dev.org
Homebrew PS2, PSP & PS3 Development Discussions
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

The hunt for HV's FIFO/Push buffer...
Goto page Previous  1, 2, 3 ... 6, 7, 8 ... 14, 15, 16  Next
 
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PS3 Development
View previous topic :: View next topic  
Author Message
Falcon



Joined: 12 Nov 2007
Posts: 4

PostPosted: Tue Nov 13, 2007 4:03 am    Post subject: Reply with quote

Maybe i have to buy a new screen so that i can enjoy my ps3 more! ;-)

I will also play with the hardcoded values.
Back to top
View user's profile Send private message
Panajev2001a



Joined: 20 Aug 2005
Posts: 100

PostPosted: Tue Nov 13, 2007 4:42 am    Post subject: Reply with quote

IronPeter wrote:
sigbus, you are of course 100% right.

We can not damage inner hypervisor structures with RSX RAMIN access ( if RSX DMAs are properly protected ).


I believe they are properly protected:

http://preview.tinyurl.com/2locyt

(Drawing #2, FIG. 1 for an overview of the covered areas)

Code:
United States Patent Application     20070208885
Kind Code    A1
Otsuka; Katsushi    September 6, 2007
Methods And Apparatus For Providing
 Independent Logical Address Space And Access Management

Abstract

A memory access control apparatus executes memory access
after the apparatus has determined whether access to memory is granted or not.
A command receiver receives, from an external memory access requesting entity,
a command with which to access data in memory,  together with an address
to be accessed and IOID to identify the memory access requesting entity.
Based on the IOID, an access decision unit determines whether or not an access is one from a memory access
requesting entity to which an access to a region designated as an access destination is to be permitted.
The access decision unit determines whether access of the memory access requesting entity is permitted or not,
for each page that serves as a basic access unit in memory



I did not check the RSX wiki out first, as it seems to me that what I stated is a very well known fact:

ps3:rsx wrote:
Since the Cell FlexIO interface controls all transactions from any external IO device to system RAM, a window to system memory is opened for the GPU


http://wiki.ps2dev.org/ps3:rsx

:(.
Back to top
View user's profile Send private message
Glaurung



Joined: 11 Oct 2007
Posts: 49

PostPosted: Tue Nov 13, 2007 11:01 am    Post subject: quick update Reply with quote

Hi,

Falcon, IronPeter, keep in mind that in non-fullscreen mode there are actually black borders in video ram to account for missing image parts on standard TV, therefore the pitch of virtual FB and video RAM FB may be different. The accelerated Xorg driver does not handle non-fullscreen mode properly yet either.

Also, a small update on the Xorg front: I've finally fixed the rendering bug with EXA Copy, using a dedicated ImageBlit object for this operation. Unlike the ScaledImage object, it handles blit in any directions properly (e.g right to left, bottom to top) and automatically. I still had to use a notifier to ensure proper rendering though, but performance looks good. There are still some tearing effects since I don't sync on vblank.

IronPeter, I don't know how to prevent X or the fb driver from rendering in the framebuffer when 3D operations is going on, perhaps we should check how it was done on older 3D cards. IIRC, there were some 2D/3D cards which could only work in exclusive mode. Anyway, I suspect they just allocated some of the video ram to X and gave the rest to 3D. Also, maybe we can use hugetlb pages if they are large enough (>1MB) and mix that with lv1_gpu_context_iomap() to get something closer to an AGP aperture.
Back to top
View user's profile Send private message
IronPeter



Joined: 06 Aug 2007
Posts: 207

PostPosted: Tue Nov 13, 2007 5:17 pm    Post subject: Reply with quote

Glaurung, great news from Xorg front. Sounds like victory :).

I think that there is a way to "stop X" and to "redraw X". Of course I can map some piece of XDR memory to GPU. But I already have one large piece.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
cnlohr



Joined: 05 Feb 2006
Posts: 24

PostPosted: Fri Nov 16, 2007 3:25 am    Post subject: Youtube'd video Reply with quote

For anyone who has been following this thread, but doesn't want to do this on their own PS3 yet, I took a video of IronPeter's demo (plus animation/vsyncing/double-buffering) in action.

http://youtube.com/watch?v=vuRLsB2q7QY
Back to top
View user's profile Send private message AIM Address
Glaurung



Joined: 11 Oct 2007
Posts: 49

PostPosted: Fri Nov 16, 2007 6:04 am    Post subject: X update Reply with quote

cnlohr, excellent video!

I've some news on the Xorg side. I've update the driver with basic SolidFill acceleration, fixed an synchronization issue with DownloadFromScreen/UploadToScreen, and added support for non-fullscreen video mode. There was also a patch from ReneR to fix driver crashing on 64-bit userland. I'm now quite satisfied with its current state and plan to move on digging the HV calls again so that we can have a truly independent DRM driver instead of the ps3fb driver hack. Feel free to test it, make a video of it :-) (try xcompmgr -c -f + mplayer ElephantDream.avi + transset and enjoy), and report bugs.

Code here, as usual:
http://mandos.homelinux.org/~glaurung/git/xf86-video-ps3.git
Back to top
View user's profile Send private message
Glaurung



Joined: 11 Oct 2007
Posts: 49

PostPosted: Fri Nov 16, 2007 10:57 am    Post subject: quick thought on dma notifiers Reply with quote

I've just noticed that since lpar_reports correspond to VRAM at address 254MB, DMA notifiers created by the HV are available from Cell. I've updated the wiki accordingly.
That means we don't need to create our own DMA notifier objects in RAMIN, we can just use the ones provided by the HV to monitor progress of our GPU operations.
Back to top
View user's profile Send private message
Glaurung



Joined: 11 Oct 2007
Posts: 49

PostPosted: Sat Nov 17, 2007 5:57 am    Post subject: hypervisor doc update Reply with quote

Hi all,

I'm back looking at HV calls, here are the findings of the day:
- lv1_gpu_context_allocate has flags as second parameter, it creates some interesting RSX DMA objects when set to 4 and 8. In particular objects created by setting flag to 8 are very interesting as they target system memory:
Code:

       key 63a handle 13378086 engine 1 offset 040170
                DMA Class 3D
                access RW,present,linear to PCI
                address 8f03f000 limit 00000fff

I believe this targets somewhere in the HV memory, but I've not tried to use this DMA object for blitting yet (and we need to discover the corresponding address in FlexIO space, just as GPU_IOIF is used for standard blits using the 0xfeed0001 object).

- lv1_gpu_device_map device 8 actually reflects video RAM at offset 0x0ff10000. This region is referenced by DMA objects created by the HV but I don't know what it is used for.

I've updated the wiki on hypervisor accordingly, including previous findings we made in this thread (so that's a lot of changes). Please check for grammar :-)
Back to top
View user's profile Send private message
toqer



Joined: 17 Nov 2007
Posts: 1

PostPosted: Sat Nov 17, 2007 11:49 pm    Post subject: Slashdot Reply with quote

Hi guys,

I don't own a PS3, but my friend does. He owns a little anime shop, does the import game thing, mods, etc. Since I installed linux on his PS3 he's had 2 customers ask him to install it on theirs.

Anyways, I've been lurking in these forums the past couple of days. I submitted this thread to slashdot.

http://slashdot.org/firehose.pl?op=view&id=381587

It's been in "Pending" limbo for the last few days but i'm sure the /. mods will pick it up soon considering how much progress you've made in the last week.

--toq
Back to top
View user's profile Send private message
IronPeter



Joined: 06 Aug 2007
Posts: 207

PostPosted: Sun Nov 18, 2007 8:15 pm    Post subject: Reply with quote

Glaurung, I think that the main problem now is hard setup.

User must:

1.) Install git
2.) Checkout and compile dtc ( head revision is broken )
3.) Checkout kernel sources
4.) Compile and install custom kernel
5.) Tame kboot, fstab, sysinit ( very untrivial thing )
6.) Install our driver

This procedure takes 6 hours for me.

The partial solution is: to strip hv1call.h, ps3fb.h, ps3fb.c from kernel sources and combine it in the kernel module. This module will stop ps3fb driver and will init the second context with FIFO control. This module will need only kernel devel package ( with any kernel version ) to be installed.

10 minutes to install and run. 2 days to write.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Panajev2001a



Joined: 20 Aug 2005
Posts: 100

PostPosted: Sun Nov 18, 2007 8:54 pm    Post subject: Reply with quote

IronPeter wrote:
Glaurung, I think that the main problem now is hard setup.

User must:

1.) Install git
2.) Checkout and compile dtc ( head revision is broken )
3.) Checkout kernel sources
4.) Compile and install custom kernel
5.) Tame kboot, fstab, sysinit ( very untrivial thing )
6.) Install our driver

This procedure takes 6 hours for me.

The partial solution is: to strip hv1call.h, ps3fb.h, ps3fb.c from kernel sources and combine it in the kernel module. This module will stop ps3fb driver and will init the second context with FIFO control. This module will need only kernel devel package ( with any kernel version ) to be installed.

10 minutes to install and run. 2 days to write.


IronPeter, I know it is early for a feature request, but it would be a very nice icing on the cake ;) if you could consider this for your kernel module:

A lot of us cannot use fullscreen modes because of overscan problems and dislike "windowed" mode with black bars because those black bars are a bit too conservative.

As you can see here ( http://forum.beyond3d.com/showthread.php?t=43859 ) and in countless other threads I am sure, those black borders are under some form of control. If you edit them properly before compiling the kernel you can properly reduce them and get a nice full-screen picture.
Since the kernel module would replace the old fb driver, the idea would be to use the pre-processor defines to help the user (if they want to) to easily change and optimize the black borders around the picture.
Back to top
View user's profile Send private message
Glaurung



Joined: 11 Oct 2007
Posts: 49

PostPosted: Sun Nov 18, 2007 10:11 pm    Post subject: Reply with quote

I agree we need a separate module for easier setup. I would prefer to have a totally independent second context with its own fifo, but we don't know how to do that yet. The second call to lv1_gpu_context_allocate does provide a different dma_control area but the values are all zero. A call to lv1_gpu_context_attribute:fb_setup returns -EBUSY. Writing my own values in dma_control[0x40/0x44] seem to have some effect but currently it crashes the GPU. So that's why I wanted to look at the HV calls a bit more before writing such a module; to have a cleaner approach. Besides, we'll need to understand context switching if we are to accelerate the mtd driver for swap over video RAM, as it will need its own context.

However, to be more pragmatic and for people who want to test early, we can indeed write an external module for GPU access that reuses the ps3fb FIFO, just as we do now. Actually all the code for this is already there in the kernel/ section of ps3gpu test code. I won't have time for ps3dev today but I'll look into it eventually.

Concerning the black borders; they are currently controlled in the Xorg driver in a very simple and basic way: we ask the fb its current mode (as does the ps3videomode utility) and have a database of corresponding fullscreen resolutions. Then we ask the fb its resolution (as does the fbset utility) and subtract the obtained width and height from the fullscreen width and height to obtain the black borders size. This could be overridden by an option in xorg.conf, but most probably ModeLines are made for this, I need to learn how they work :-) Concerning the linux framebuffer black borders, I don't know if we can do much without recompiling.
Back to top
View user's profile Send private message
IronPeter



Joined: 06 Aug 2007
Posts: 207

PostPosted: Sun Nov 18, 2007 10:17 pm    Post subject: Reply with quote

Glaurung, did you try to call FB_SETUP after fifo trap is setted? I think it can return BUSY in that case ( some notifier is disabled ).
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Glaurung



Joined: 11 Oct 2007
Posts: 49

PostPosted: Sun Nov 18, 2007 11:01 pm    Post subject: Reply with quote

Hmm, yes, maybe that's the problem. Did you manage to setup a fully working second context?
Back to top
View user's profile Send private message
IronPeter



Joined: 06 Aug 2007
Posts: 207

PostPosted: Mon Nov 19, 2007 1:05 am    Post subject: Reply with quote

Glaurung, I think I was able to make that setup. Not sure, need to retest.

Also I want to test graphic interruption with different masks ( via dinfo->irq.mask ). Do not want to restart Linux at any RSX 3D hangup.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Glaurung



Joined: 11 Oct 2007
Posts: 49

PostPosted: Mon Nov 19, 2007 1:47 am    Post subject: Reply with quote

Yes that's be nice :-) I didn't look into interrupts yet, there is probably some valuable info there.

So, I just retested FB_SETUP before fifo is trapped, and I still get the busy return code. Maybe I'm doing something wrong, so if you manage to have a second context, I'll be interested to know how. I'll continue looking into it on my side too.
Back to top
View user's profile Send private message
Panajev2001a



Joined: 20 Aug 2005
Posts: 100

PostPosted: Mon Nov 19, 2007 9:25 pm    Post subject: Reply with quote

IronPeter wrote:
Glaurung, I think I was able to make that setup. Not sure, need to retest.

Also I want to test graphic interruption with different masks ( via dinfo->irq.mask ). Do not want to restart Linux at any RSX 3D hangup.


It was so fun doing that during PS2's Linux days... oh GS ;).

Well, maybe it was not that fun hehe.
Back to top
View user's profile Send private message
Glaurung



Joined: 11 Oct 2007
Posts: 49

PostPosted: Tue Nov 20, 2007 1:10 am    Post subject: ps2dev kernel branch Reply with quote

IronPeter, I've been looking at the separate module option and I don't think that's the best approach finally. Recently the call to lv1_gpu_memory_allocate in ps3fb.c has been changed to:
Code:

        status = lv1_gpu_memory_allocate(ps3fb_videomemory.size, 0, 0, 0, 0, ...)

That means if we want an external kernel module we have to free the context, free the memory and reallocate everything back, based on assumptions of the handles returned by the HV to ps3fb. Doing a second lv1_gpu_memory_allocate(0, ...) will not open the RAMIN DMA hole again, so I don't see any other option.

I'm starting to think the best approach might be to fork a ps2dev kernel branch from geoff's tree and put every enhancement we are interested in there. I'm thinking of new fb driver (including support for black borders adjustements), gpu access, game controller and remote drivers, etc... We could provide precompiled kernels for 'lazy' people too :-)
What do you all think of this?

For now I'll just get back to the HV calls.
Back to top
View user's profile Send private message
IronPeter



Joined: 06 Aug 2007
Posts: 207

PostPosted: Tue Nov 20, 2007 1:37 am    Post subject: Reply with quote

>Doing a second lv1_gpu_memory_allocate(0, ...) will not open the RAMIN DMA hole again

Why? I see no reason for that. It is independent memory region, idependent DMA object.

I'll test the second context creation at home.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
IronPeter



Joined: 06 Aug 2007
Posts: 207

PostPosted: Tue Nov 20, 2007 6:30 am    Post subject: Reply with quote

heh, I've tried fb setup for the second context. Fail with busy. Another thing to fix :).
Back to top
View user's profile Send private message Send e-mail Visit poster's website
boxbuilder



Joined: 17 Nov 2007
Posts: 15

PostPosted: Fri Nov 23, 2007 1:49 am    Post subject: Reply with quote

Excellent work!

I have gotten the patch to work and put ps3X in the startx script, and got multiple copys of "mplayer -vo x11" to play translucent on top of each other (cpu hog!?) (have not patched mplayer yet)

When I run ./ps3gpu I get:
vram 264241152 fifo 65536 ctrl 4096
Segmentation Fault

and when I try to recompile it, it dosn't know the size of the variable type "info".

I'm not looking for a walkthrough, please keep writing code instead, But it would be nice to hear from somebody who has it working as to their firmware version, kernel version (and where from), gcc version, device tree compiler version (and versions of any other software you think is important)

I would like to help in any way I can, unfortunitly my coding ability are nowhere near your level, so I would be happy to make a help page for people like me who want to put on the your software (I would just need some hosting somewhere)

ps. if all 256MB can be DMA'd with the crack, can't we just put on bochs, and windows and try the geforce7800 driver? Just a dream ;-)

-cabe
_________________
______________________________________________________________
Vote Ron Paul for freedom!
watch http://video.google.com/videoplay?docid=-8327695139643041382
Back to top
View user's profile Send private message
IronPeter



Joined: 06 Aug 2007
Posts: 207

PostPosted: Fri Nov 23, 2007 5:19 am    Post subject: Reply with quote

if your patch is applied correctly file $(LINUX)/include/asm-powerpc/ps3fb.h contains definition of this structure:

http://www.everfall.com/paste/id.php?u0aqjuh432st

recompile from source.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Glaurung



Joined: 11 Oct 2007
Posts: 49

PostPosted: Fri Nov 23, 2007 6:04 am    Post subject: Reply with quote

Also note you cannot mix both the Xorg accelerated driver and the ps3gpu test program yet.
The reason is we share the same FIFO and hardware context for now. The hardware has capability for 8 differents contexts so we could allocate for example one for Xorg, one for libGL and one for swap over VRAM, but we don't know how to do that yet.

So if you want to play with IronPeter's amazing 3D stuff, run it from the framebuffer console or from unaccelerated X.

Also, mplayer -vo xv would better use the capabilities of the RSX (hardware YUV->RGB conversion and scaling) than -vo x11.
Back to top
View user's profile Send private message
IronPeter



Joined: 06 Aug 2007
Posts: 207

PostPosted: Fri Nov 23, 2007 6:10 am    Post subject: small libps3rsx update Reply with quote

I coded DXT textures support. With toolchain for compression and with binary layer. Check ps3rsx repo.

Texture setup is relative high level function: http://www.everfall.com/paste/id.php?507se1jlqzml

My plan is to write high level functions for everything ( buffers, states, render target setup ).

Enjoi.

Peter.

PS. And I very-very want to have textured penguin 3D model for demo :).
Back to top
View user's profile Send private message Send e-mail Visit poster's website
IronPeter



Joined: 06 Aug 2007
Posts: 207

PostPosted: Fri Nov 23, 2007 10:07 pm    Post subject: Reply with quote

Just noted comment.

>I'm starting to think the best approach might be to fork a ps2dev kernel branch from geoff's tree and put every enhancement we are interested in there

I think about other thing. I want to make small linux distro on boatable CD. Like "devkit environment". Custom linux kernel with command line ( and probably basic X ). 50-200 Megs of iso disc image.

People can boot from this disc, try 3D demos. Homebrew games can be distributed on bootable CD. "Inject CD into PS3 and play game".

It will be great if somebody is able to make this stripped linux distro.

PS. I think, there are many people with broad-band connection and small amount of free time. "Download LiveCD, inject it and play with 3D in 10 minutes" - it is good idea.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
ps2devman



Joined: 09 Oct 2006
Posts: 265

PostPosted: Fri Nov 23, 2007 10:25 pm    Post subject: Reply with quote

I wonder what happened to the ps3link project.
Source directory is still empty...
Anybody knows?
It would be the natural competitor of your Linux LiveCD distro idea.
(Boot OtherOS ps3link, upload homebrew game from PC, play it)


Last edited by ps2devman on Sat Nov 24, 2007 9:56 pm; edited 1 time in total
Back to top
View user's profile Send private message
emoon



Joined: 18 Jan 2004
Posts: 91
Location: Stockholm, Sweden

PostPosted: Sat Nov 24, 2007 6:53 am    Post subject: Reply with quote

ps3sdk, ps3link and ps3client is on ice for a while more as im really uber busy at work currently.

I do plan to work on it afterwards. Some stuff to mention that is running:

* Basic framebuffer (based on OtherOS demo, but much cleaned up)
* Basic network driver
* Uses lwip for tcp/ip support
* You can telenet from PC. to ps3 and it will echo back what you send from the PC side.
* All linux code has been rewritten/redesigned from scratch so its 100% BSD now and no GPL.
* Some more stuff that I have forgot about.
Back to top
View user's profile Send private message Visit poster's website
evocallaghan



Joined: 15 Nov 2007
Posts: 2

PostPosted: Sat Nov 24, 2007 4:19 pm    Post subject: Reply with quote

IronPeter: I am already working on my own Linux distro for the PS3.
I got a custom kernel I built but I need help with my installer as I don't yet know how to partition the HDD with Python or Perl ?

I do also plan to have a NetBSD or FreeBSD based version as well.
As soon as I get my loader working.

Keep up the great work!
Ed.
_________________
--
http://sourceforge.net/projects/ps3-bsd-loader/
`Of course it runs NetBSD`
Back to top
View user's profile Send private message
ps2devman



Joined: 09 Oct 2006
Posts: 265

PostPosted: Sat Nov 24, 2007 10:05 pm    Post subject: Reply with quote

emoon, I think that would help IronPeter if you just publish (or let him look at) your partial work (even if nothing works).

There is the possibility that the current design in progress by IronPeter can link itself somehow later to EITHER Linux or ps3link (at some intermediate API level).

We shouldn't miss this opportunity (i.e we should avoid having IronPeter know about ps3link internals too late, after all his design is finished).

Linux is nice for a coder but is frightening for just a game player.
Back to top
View user's profile Send private message
IronPeter



Joined: 06 Aug 2007
Posts: 207

PostPosted: Sat Nov 24, 2007 10:46 pm    Post subject: Reply with quote

do not worry, ps3rsx project will have RSX core and tools. Core does not depend from anything. You need only mmap or any other service for resource loading.

Tools need linux environment of course.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PS3 Development All times are GMT + 10 Hours
Goto page Previous  1, 2, 3 ... 6, 7, 8 ... 14, 15, 16  Next
Page 7 of 16

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group