PDA

View Full Version : How to determine the pipelines' number in program?



foollove
12-31-2003, 12:05 AM
Hi,everyone,
I wonder how I can determine the pipelines' number in program, such as how many pipelines for vertex and pixel respectively. In this way, we can come to know the parallelism for each component.

Another problem is about the fragment program performance. When I enable the fragment program by the following:
glEnable(GL_FRAGMENT_PROGRAM_NV);
glBindProgramNV(GL_FRAGMENT_PROGRAM_NV, ShaderID);
The performance drop dramatically even only ONE intruction in that fragment program.
The primitive is following:
glBegin( GL_QUADS );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0, 0);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0, 0);
glVertex2d( 0, 0);

glMultiTexCoord2fARB(GL_TEXTURE0_ARB, fTexCoord[0], 0);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, fTexCoord[0], 0);
glVertex2d( _iWidth, 0);

glMultiTexCoord2fARB(GL_TEXTURE0_ARB, fTexCoord[0], fTexCoord[1]);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, fTexCoord[0], fTexCoord[1]);
glVertex2d( _iWidth, _iHeight);

glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0, fTexCoord[1]);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0, fTexCoord[1]);
glVertex2d( 0, _iHeight);
glEnd();

const int _iWidth = 256;
const int _iHeight =256;
With Fragment program disabled, the cost is less than 0.01ms. Just one output instruction, the performance drops to 90ms. Add an texture fetch instructure, the performance drops to 150ms.
Are there any tricks to overcome or to full dig out the potential of HW.
My machine is nVidia Quadro4 980 XGL with latest driver.

Thanks for any comments.
Happy New Year!



[This message has been edited by foollove (edited 12-31-2003).]

Korval
12-31-2003, 12:41 AM
If Quadro4's are based on the GeForce4 driver, then the reason you're getting a performance drop is because fragment programs aren't avaliable in hardware.

foollove
12-31-2003, 12:55 AM
Thanks a lot for your reply.
But I download the driver from nvidia website which is special for Quadro products.

Still with updated driver, GeForce3 and GeForce4 MX support Fragment Program, but GeForce4 Ti4600 NOT support Fragment Program. I am really confused with this. Can someone tell me the reason.

Thanks again.


Originally posted by Korval:
If Quadro4's are based on the GeForce4 driver, then the reason you're getting a performance drop is because fragment programs aren't avaliable in hardware.



[This message has been edited by foollove (edited 12-31-2003).]

Zengar
12-31-2003, 01:01 AM
I was shure that Quadro4 doesn't support fragment programs.

cbwan
12-31-2003, 01:45 AM
no card under geforce/quadro FX supports fragment programs
you are getting software emulation.

the geforce4 should also have software emulation (works for my ti4200), try reinstalling your drivers and restarting your system.

on linux the nvidia drivers sometimes
forget a lot of extensions =)
(and don't forget to export __GL_NV30_EMULATE=1)
cbwan


Originally posted by foollove:
Thanks a lot for your reply.
But I download the driver from nvidia website which is special for Quadro products.

Still with updated driver, GeForce3 and GeForce4 MX support Fragment Program, but GeForce4 Ti4600 NOT support Fragment Program. I am really confused with this. Can someone tell me the reason.

Thanks again.



[This message has been edited by foollove (edited 12-31-2003).]

foollove
12-31-2003, 03:22 AM
I have updated the driver. But there are still problems with GeForce4 Ti4600 to support Fragment Program.

Once more, what's the difference between Quadro and GeForce. If Quadro NOT support Fragment Program, what's its advantage?

Thanks anymore.

zeckensack
12-31-2003, 04:01 AM
Originally posted by foollove:
Once more, what's the difference between Quadro and GeForce. If Quadro NOT support Fragment Program, what's its advantage?It's more expensive and it has the word "professional" written on the box http://www.opengl.org/discussion_boards/ubb/wink.gif
Besides that, I think it has faster line rendering for CADish wireframe display.

"Consumer cards" regularly split a line into a pair of thin and long triangles, causing the inevitable performance drop. Quadros don't.

SirKnight
12-31-2003, 08:44 AM
Originally posted by foollove:
I have updated the driver. But there are still problems with GeForce4 Ti4600 to support Fragment Program.


Yes and there always will be. lol. Unless you have a GeForce FX OR Quadro FX you WONT get fragment programs. Unless you use NVEmulate to run them on the cpu in software, thus giving horrible performance.

-SirKnight

AdrianD
12-31-2003, 12:41 PM
geforce3 and the according Quadro are the same chips! the technical difference is the layout of the graphicscard.
(whats the english word for the german "platinenlayout"? can't remember ths at the moment)
and this difference makes the chipset to draw lines faster & smoother.
you can think of it as a kind of "hardwired jumper".
actually you can turn a gf3 card into a quadro when you connect some of the pins of the

disclaimer:
i haven't verified this information myself.(so my gf3 is still a gf3)
so if i am wrong feel free to correct me.


btw.: happy new year!

[edit] if forgot to say, that i don't know if this is also true for the gf4 familiy, but i guess so.


[This message has been edited by AdrianD (edited 12-31-2003).]

ScottManDeath
12-31-2003, 12:49 PM
platinenlayout == PCB board layout

zeckensack
12-31-2003, 01:06 PM
Originally posted by ScottManDeath:
platinenlayout == PCB board layoutPCB = printed circuit board
"Printed circuit board board layout" would be a tad redundant http://www.opengl.org/discussion_boards/ubb/wink.gif

And happy new year. Make sure to drink enough http://www.opengl.org/discussion_boards/ubb/biggrin.gif

V-man
12-31-2003, 09:50 PM
It's kind of odd that you can execute NV_fp in the first place.

If your card doesnt support NV_fp, then by default you shouldn't have NV_fp available unless YOU turn on emulation.

But instead, you have RC, RC2, TS, TS2, TS3, ...