(submitted) Graphics card emulation

Threads related to Google Summer of Code
Post Reply
VasiliiGustelev
Gnoblar
Posts: 23
Joined: Fri May 05, 2006 5:08 pm
Contact:

(submitted) Graphics card emulation

Post by VasiliiGustelev » Fri May 05, 2006 5:17 pm

Hello,

i want to unerstand some details in this project idea.
Do we need to emulate low hardware resources (lack of memory, lack of gpu speed)? Some cards dont support some screen resolutions, color depth etc..

Or we just want to have fake card report about supported graphic extensions?

Will i be just about to hit, if i say, that we need to emulate (for GL):
GL_Version,
GL_Vendor, GL_Renderer
GL_Extensions
WGL_Extensions

?
Last edited by VasiliiGustelev on Sun May 07, 2006 8:38 pm, edited 1 time in total.
0 x

VasiliiGustelev
Gnoblar
Posts: 23
Joined: Fri May 05, 2006 5:08 pm
Contact:

!

Post by VasiliiGustelev » Fri May 05, 2006 5:23 pm

mm, this question is not because i can't read your project idea, or because i stupid.

i think, it's not hard to make that system, so i thought - if there any deep hided difficulties?
0 x

User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19265
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 2
Contact:

Post by sinbad » Fri May 05, 2006 6:10 pm

This project is basically about overriding the flags that OGRE keeps regarding rendering capabilities, ie the contents of RenderSystemCapabilities. If there are manual checks in either of the rendersystems that are affected by the emulation then these flags probably need to be extracted into a RenderSystemCapability entry instead so they can be downgraded by the emulation system.
0 x

VasiliiGustelev
Gnoblar
Posts: 23
Joined: Fri May 05, 2006 5:08 pm
Contact:

interesting

Post by VasiliiGustelev » Fri May 05, 2006 6:54 pm

ah, that's more interesting! =)

move all device-checking things in one place and make DUMMY for it =)
0 x

Znah
Gnoblar
Posts: 8
Joined: Tue May 02, 2006 5:12 pm

some thoughts

Post by Znah » Sat May 06, 2006 12:17 am

It seems to me that card emulation is more complicated that just reporting smaller subset of supported features. I have tried some shader programming , especially using GLSL, and faced some compatibility problems. Some shaders worked ok on my radeon9600 but on some other card they fall back on very slow software implementaion.
I think it depends on complexity of shader, number of texture lookups and so on, but i couldn't find a way to get these info about particular glsl implementation in specification.
0 x

Znah
Gnoblar
Posts: 8
Joined: Tue May 02, 2006 5:12 pm

Post by Znah » Sat May 06, 2006 12:30 am

Also on some nvidia cards rendering result was a bit different.

But may be i just go to far and these problems do not exist on newer cards or will disappear in future versions of drivers.
0 x

Lioric
Google Summer of Code Mentor
Google Summer of Code Mentor
Posts: 295
Joined: Fri Aug 06, 2004 10:25 pm

Post by Lioric » Sat May 06, 2006 2:44 am

This project is for emulating lower card capabilities using the current machine/platform hardware, not for emulating different card brands/vendors

Its for for testing different resource/rendering code paths (i.e lods, schemes, techniques)
0 x

User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19265
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 2
Contact:

Post by sinbad » Sat May 06, 2006 11:47 am

@Znah: the vast majority of what you're talking about is covered by the shader profiles the card reports as supporting. These should also be covered (downgraded) in the emulation scheme.
0 x

VasiliiGustelev
Gnoblar
Posts: 23
Joined: Fri May 05, 2006 5:08 pm
Contact:

crawling in code

Post by VasiliiGustelev » Tue May 09, 2006 9:06 am

I've crawled around in Ogre's code and have some thoughts on topic.

Capabilities test is different in render systems.
Except of initialising mCapabilities, OpenGLRenderSystem also defines some functions (like ARB functions and so on).
OpenGL do capabilities initialization in one routine InitGL.

DirectX9RenderSystem do only mCapabilities and mGpuProgramManager initialization. This is divided in three routines.

1. It will be not so easy to emulate some lesser hardware in OpenGL: except of changing stuff in RenderSystemCapabilities, we'll need to initialize graphic routines (there's not so much, although).
My first idea - to divide InitGL in two steps:
- initialising mCapabilities
- initialising GLext functions, like glBindBufferARB.
This will lead to little testing doublework, but i think, it's not so critical.

2. We can define method setLesserCapabilities in RenderSystem class and call it after RenderSystem initialization.
Also, we can override this method in particular RenderSystem, and get rid of troubles with GLext functions (and many other).


3. I'd love to make this great method for you :)
0 x

Post Reply