Jump to content

OpenGL ES 3D drivers, v1 compatibility layer


Recommended Posts

Guest GinKage
That's great chainfire, actually your update in QTC/CFC might fix current crash issues with manila 2.5.... i debugged the published source, and it crashes at function Vec3 ComputePrincipleComponent( Sym3x3 const& matrix ) from file: squish_s3tc.cpp...

I feel like a character of the famous Russian anecdote:

- Doctor, help me, I'm being ignored by everyone...

- Next!

I told you twice already, that you should try replacing all QTC-compressed texture files with CFC-compressed ones, so that libgles won't recompress them into S3TC (hence, the speed will increase), everything will be drawn in 24/32-bit instead of 16 bit, and you'll have more free Main Storage (as CFC has a better compression ratio).

The other option, now, is use a customized libgles that doesn't use recompression. That way, Xtrakt won't work (it requires just too much texture memory), but maybe Sense will be faster without any modifications. Although, I strongly recommend you going with the first option (and I do it for the third time already)...

Link to comment
Share on other sites

Guest rodrigofd
I feel like a character of the famous Russian anecdote:

- Doctor, help me, I'm being ignored by everyone...

- Next!

I told you twice already, that you should try replacing all QTC-compressed texture files with CFC-compressed ones, so that libgles won't recompress them into S3TC (hence, the speed will increase), everything will be drawn in 24/32-bit instead of 16 bit, and you'll have more free Main Storage (as CFC has a better compression ratio).

The other option, now, is use a customized libgles that doesn't use recompression. That way, Xtrakt won't work (it requires just too much texture memory), but maybe Sense will be faster without any modifications. Although, I strongly recommend you going with the first option (and I do it for the third time already)...

I am sorry i didn't tell you yet (i was sure i did) ... but CFC recompressing was the first thing i did once this manila loaded! :)

After reading all your written advantages of doing such thing. Unfortunately, not only it didn't helped in the crashing, but speed and aesthetics didnt improve at alll ;) ..

Maybe i am not doing it the right way, i used CFC GUI 0.60.35 from chainfire, compressing all dump and patching manila, is there any other way ?

(this question is more targeted to CF than GK)

I'll try your dll now.. thx a lot for your time!

Link to comment
Share on other sites

Guest Chainfire
I am sorry i didn't tell you yet (i was sure i did) ... but CFC recompressing was the first thing i did once this manila loaded! :)

After reading all your written advantages of doing such thing. Unfortunately, not only it didn't helped in the crashing, but speed and aesthetics didnt improve at alll ;) ..

Maybe i am not doing it the right way, i used CFC GUI 0.60.35 from chainfire, compressing all dump and patching manila, is there any other way ?

(this question is more targeted to CF than GK)

I'll try your dll now.. thx a lot for your time!

No, as per my earlier instructions you need to use CFC _CONSOLE_ with the "-if" switch. Perform it on all manila package folders. That recompresses the QTC's to the CFC format that works best with Samsung.

However, you know I also did some work on 2.5 for I8000 earlier and that didn't solve any crashing issues for me - though it did perform better.

Try using this method and then tracing where it crashes, perhaps it will yield useful information.

Link to comment
Share on other sites

Guest rodrigofd
No, as per my earlier instructions you need to use CFC _CONSOLE_ with the "-if" switch. Perform it on all manila package folders. That recompresses the QTC's to the CFC format that works best with Samsung.

However, you know I also did some work on 2.5 for I8000 earlier and that didn't solve any crashing issues for me - though it did perform better.

Try using this method and then tracing where it crashes, perhaps it will yield useful information.

Oops... so dumb i am .. i though all this time i was actually compressing with cfc when using your gui program... i was sure it my hd2 rom looked too ugly... B)

Now with this properly done, it looks great!!! really a huge aesthetic difference... but crashes remain.

Anyway CF, let me tell you , the 2.5 i currently use in my HD2 rom is a more recent one that the one we were playing with some months ago, which had lot of missing dependencies. This one (1921) i got almost all figured out, and the 'crashes' actually are 3 or 4 annoying ones, if those are fixed then manila 2.5 gets 100% working :) ...

Specifically, i know to crash in 3 screens that share common things: 'add city' from clock, the search box in Internet tab, and link contact to facebook profile...

All these, have an input box within Opengl manila, that, when gets focus, the keyboard gets deployed, and just at that moment, it crashes (if i debug it, vs2008 halts at the function i wrote above, in line 1 , 'illegal instruction' when doing a arithmetic calc)...

Unfortunately i failed in making a working CAB for the whole manila, as there are tons of dependencies, (GK also asked me for this) ...

If any of you both, care to flash my ROM and try to fix this pair of issues, i'll be more than gratified (and many others i believe ;) )....

PD case of beers are coming.. for both of you great guys B)

Link to comment
Share on other sites

Guest Chainfire

Yes, with CFC GUI you ARE compressing to CFC but to a format that is aimed at the graphics chip used by HTC! Our libgles does decode these, but it is better if you use CFC console to convert to Samsung optimized CFC. It is both faster and better image quality that way.

CFC GUI is made for the most common usages of CFC, and does not offer even half of the functionality CFC console does. And that doesn't even offer half the functionality the internal library does :) As Samsung conversion is not a common case, you must use the console version.

As for flashing, I may do so later, however my I8000's are at the office and I will not be at the office until January 4. And then I probably have a lot of work to catch up ;) Also keep in mind that as I have stated before, I only have sample devices, not retail devices, so I'm not even sure your ROM will even work.

Edited by Chainfire
Link to comment
Share on other sites

Guest Weesals

I have been trying for a while but cant get GLES2 to render anything meaningful at more than 20fps with the Omnia2s huge resolution, however I think I have found a workaround.

First I tried rendering the screen to a 240*400px pbuffer, then rendering that to the screen, which allows me now to render much more complex scenes with minimal performance loss, but rendering that pbuffer to the screen still cuts fps down to ~ 28fps.

Since fixed function is usually much faster than shaders, I thought maybe rendering to the top left 240*400px then StretchBlt'ing that to the entire screen might work faster, and indeed it does. (I'm doing this by creating a child window, rendering to that, then calling StretchBlt to copy to the parent window). With this I can get up to 35fps which, with game content, would still be a playable 25fps.

Of course this means its redundantly swapping back buffers and part of the screen flickers or displays only the smaller rendering, Does anyone here know of a way to get a Device Context (HDC) out of a pbuffer (I'm sure they are implemented almost identically), or how to render to an offscreen HDC? (eglCreateWindowSurface takes a HWND)

Perhaps we could add this to the GLES 1 driver so it can render at a lower res and upsample it to the omnias display? I think since the screen is so small with such a high res, framerate will be much more important than resolution.

Link to comment
Share on other sites

Guest GinKage
Of course this means its redundantly swapping back buffers and part of the screen flickers or displays only the smaller rendering, Does anyone here know of a way to get a Device Context (HDC) out of a pbuffer (I'm sure they are implemented almost identically), or how to render to an offscreen HDC? (eglCreateWindowSurface takes a HWND)

Since we know arguments to eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx) and eglSwapBuffers(EGLDisplay dpy, EGLSurface draw), I'll tell you one secret:

HDC *pdc = *((HDC**)(((BYTE *)draw) + 0x98));

HDC hDCsrc = pdc[3];

HDC hDCdst = pdc[4];

Here, hDCsrc is an off-screen buffer, and hDCdst is an on-screen buffer (I dug it out some months ago, so maybe I mistook something here, but essentially it's like this).

So, eglSwapBuffers in fact just BitBlt's one HDC to another, you may try to simply replace it with your own code. Oh, and EGLDisplay in eglSwapBuffers is just an HDC that you passed in eglGetDisplay.

Link to comment
Share on other sites

Guest lantony

Guys i've just bought an Omnia2 and i have some doubts on the 3d performance:

1) why the CPU/GPU of Omnia2 can render the same number of polygons per second as the Iphone's PowerVR GPU (4M per second) but in real life it can't even manage a stupid game like krayon physics or SPB 3d Charousel? Looks like there are really bad 3d drivers in the Omnia2 roms, i recently updated to the latest JA1 ROM and the situation is still the same!

2) How is it possible that my old Omnia i900 can play HD videos (480p) much faster than Omnia2 using coreplayer? Looks like there is no hardware acceleration for videos.

Hope somebody can answer these 2 doubts i have, thanks :)

Link to comment
Share on other sites

Guest Chainfire

1) Crayon Physics runs great on my Omnia 2. For SPB 3D caroussel make sure you have very latest Mobile Shell. There was an update from SPB to fix it.

2) It might be that you are using the wrong settings for CorePlayer. Try switching between GDI / DirectDraw / raw framebuffer and see what works best for you. In either case, CorePlayer does not directly support Samsung's hardware acceleration. The built-in Touch Player can play video better on these devices than CorePlayer can, at the moment.

X) You're not in the right thread to ask these questions.

Link to comment
Share on other sites

1) Crayon Physics runs great on my Omnia 2. For SPB 3D caroussel make sure you have very latest Mobile Shell. There was an update from SPB to fix it.

Hi Chainfire, would you mind posting the link to the SPB update? (as long as your not just referring to the update to 3.5.3) I can't seem to find it, is it a patch for the Omnia 2?

I would greatly appreciate it. I have been sticking to the base 3.5.3 without any caroussel acceleration do to all of the registry editing and extra installation of dll's involved. It would be great if there was a simple patch to remedy all of this.

I noticed, running the FPU enabler, that there was significant improvement; however I hope SPB is on top of this and will make everything work for us soon!

:)

Link to comment
Share on other sites

Guest oldnnwise

I'm developing an 3D application on OMNIA2 using GinKage's Opengl-ES Library files.

I received the latest dll(ver 0.258).

It's very very very useful for me cause it supports PVR texture compression format.

It really really does WORK!!!

But, I catched there are some problems on my application for handling Matrix.

glGetFixedv(GL_MODELVIEW_MATRIX,...);

glGetFixedv(GL_PROJECTION_MATRIX,...);

glGetIntegerv(GL_VIEWPORT,...);

funtions are not working correctly....

I saw the comments for release v0.258

" removes matrix palette from extensions list (so that glBenchmark 1.1 wouldn't hang); "

I guess, Maybe, that effects using those functions....

So......

Can you make the DLL file included matrix palette and re-RELEASE it???

I really really really really need that...

or,

Can you show me the way to make my own 'libgles_cm.dll'????

please, Help me....

Link to comment
Share on other sites

Guest oldnnwise

I'm developing an 3D application on OMNIA2 using GinKage's Opengl-ES Library files.

I received the latest dll(ver 0.258).

It's very very very useful for me cause it supports PVR texture compression format.

It really really does WORK!!!

But, I catched there are some problems on my application for handling Matrix.

glGetFixedv(GL_MODELVIEW_MATRIX,...);

glGetFixedv(GL_PROJECTION_MATRIX,...);

glGetIntegerv(GL_VIEWPORT,...);

funtions are not working correctly....

I saw the comments for release v0.258

" removes matrix palette from extensions list (so that glBenchmark 1.1 wouldn't hang); "

I guess, Maybe, that effects using those functions....

So......

Can you make the DLL file included matrix palette and re-RELEASE it???

I really really really really need that...

or,

Can you show me the way to make my own 'libgles_cm.dll'????

please, Help me....

Link to comment
Share on other sites

Guest GinKage
glGetFixedv(GL_MODELVIEW_MATRIX,...);

glGetFixedv(GL_PROJECTION_MATRIX,...);

glGetIntegerv(GL_VIEWPORT,...);

funtions are not working correctly....

In fact, I didn't implement these functions (been too lazy to go through all the possible states that may be queried).

But, of course, you can do it by yourself, as sources are open. :)

Link to comment
Share on other sites

Guest Weesals
1) why the CPU/GPU of Omnia2 can render the same number of polygons per second as the Iphone's PowerVR GPU (4M per second) but in real life it can't even manage a stupid game like krayon physics or SPB 3d Charousel? Looks like there are really bad 3d drivers in the Omnia2 roms, i recently updated to the latest JA1 ROM and the situation is still the same!

It seems the graphics in the Omnia 2 has a very bad fill rate, so unless a game is properly optimised or rendered to a smaller area, they wont run at acceptable speeds :).

As for video, the Omnia 2 has 4x as many pixels as the first Omnia; even if the video is the same resolution, the graphics processor is doing 4x the work needed to blit the image to the screen.

Link to comment
Share on other sites

Guest lantony
It seems the graphics in the Omnia 2 has a very bad fill rate, so unless a game is properly optimised or rendered to a smaller area, they wont run at acceptable speeds :) .

As for video, the Omnia 2 has 4x as many pixels as the first Omnia; even if the video is the same resolution, the graphics processor is doing 4x the work needed to blit the image to the screen.

i don't think it's a fill rate problem of the Omnia2 processor. Read below:

PowerVR MBX-Lite (iPhone 3G): 1 M triangles/s, 100 M pixels/s

Samsung S3C6410 (Omnia II): 4 M triangles/s, 125.6 M pixels/s

PowerVR SGX 520 (Palm Pre): 14 M triangles/s, ___ M pixels/s

Qualcomm QSD8250 (Toshiba TG01/HTC HD2): 22 M triangles/s, 133 M pixels/s

PowerVR SGX 535 (iPhone 3GS): 28 M triangles/s, 400 M pixels/s

Edited by lantony
Link to comment
Share on other sites

Guest oldnnwise

I tested my sample application using another library( Vincent Library 1.x Final released version ) on my OMNIA2.

With that Library,

glGetFixedv(GL_MODELVIEW_MATRIX,...);

glGetFixedv(GL_PROJECTION_MATRIX,...);

glGetIntegerv(GL_VIEWPORT,...);

funtions work correctly.

But, Vincent Library does not support PVRTC.

So, that means Vincent library is NOTHING for me....ã… .ã… ...

I really really really WANNA

Version 0.258 Library be able to do correctly those functions.

How Can I fix that problem???

Edited by oldnnwise
Link to comment
Share on other sites

Guest lantony
1) Crayon Physics runs great on my Omnia 2. For SPB 3D caroussel make sure you have very latest Mobile Shell. There was an update from SPB to fix it.

2) It might be that you are using the wrong settings for CorePlayer. Try switching between GDI / DirectDraw / raw framebuffer and see what works best for you. In either case, CorePlayer does not directly support Samsung's hardware acceleration. The built-in Touch Player can play video better on these devices than CorePlayer can, at the moment.

X) You're not in the right thread to ask these questions.

1)strange that it's fine on your Omnia2, on all the youtube videos it's slow like this:

It would be nice to see your video :)

2) It's not a problem of settings it's a problem with the Omnia2 Hardware support in Coreplayer. The built in touchplayer has hardware acceleration but it can't read all the video formats that Coreplayer can read (for istance all the HD 480p videos in the apple website) and many others :)

Link to comment
Share on other sites

Guest Krecik2002

Hi,

I have ROM version NXXIL1, OpenGLESv1 package from the first page of this topic installed but still I can't get Experiment 13 to start :) Is there anything I can do besides flashing ROM? Maybe getting other version of libGLESv1_CM.dll would solve this problem, or it doesn't matter? If this info helps, screentex.exe and triangle2.exe from this topic don't work either, but I was able to run smoothly screentex2.exe, Xtrakt and carousel from SPB MS.

Link to comment
Share on other sites

Guest Ender Psp
Hi,

I have ROM version NXXIL1, OpenGLESv1 package from the first page of this topic installed but still I can't get Experiment 13 to start :) Is there anything I can do besides flashing ROM? Maybe getting other version of libGLESv1_CM.dll would solve this problem, or it doesn't matter? If this info helps, screentex.exe and triangle2.exe from this topic don't work either, but I was able to run smoothly screentex2.exe, Xtrakt and carousel from SPB MS.

Sorry for the offtopic but how were you able to run Xtrakt? What did you do? I'm on NXXII9 and not able to run it (or Expreiment 13). Moreover, I've tried libGLESv1_CM.dll from 0.256, 0.258 and if it's in Windows the games Monopoly World and Boom Blox crash at startup. Any advices? Thanks in advance.

Link to comment
Share on other sites

Guest Krecik2002
Sorry for the offtopic but how were you able to run Xtrakt? What did you do? I'm on NXXII9 and not able to run it (or Expreiment 13). Moreover, I've tried libGLESv1_CM.dll from 0.256, 0.258 and if it's in Windows the games Monopoly World and Boom Blox crash at startup. Any advices? Thanks in advance.

Only thing I had to do in order to run xtrakt was installing v 0.258 package. These packages contain libgles_cm.dll not libGLESv1_CM.dll which is present in each device "out of the box". In the previous post, I was wondering what is the difference between ROM versions causing some games (like Experiment 13) to work or not to work on Omnias with same, newest version of OpenGL ES 3D package installed. Maybe it's only a matter or different verions of libGLESv1_CM.dll or few other libraries present in system, and it would be enough to copy such files from other Omnia without flashing the entire device with a different ROM?

It would be nice to have some tool for tracing what files are being opened by selected thread in the system (something like Process Explorer for desktop windows),which would probably let us determine last library opened by game before it stops loading or crashes...

Edited by Krecik2002
Link to comment
Share on other sites

Guest Krecik2002
if i installed this can i run spb mobile shell 3.5.3?

You still won't be able to select anything from hardware accelerated carousel but this thing is a useless waste of memory anyways so who cares...

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.