We are utilising Windows XP embedded for martime use (chart, ECDIS). The hardware platform we are using is graphics vice; 945GM Express with the Chrontel CH7307 Enoder for DVI.
I am currently experiencing a problem when porting to widescreen configurations, going from 4:3 1600x1200 to 16:9 1680x1050. Most circles are round, but in my chart program (not sure what drawing technology is used) the circles becomes elliptical.
If I install the GMA driver instead of the IEGD driver, then the problem is solved. However its not an option running the system on the GMA driver.
Has annyone ever experienced anything similar?
Hardware Development Engineer
Marine Technologies LLC
First I wil bring the conclusion to the begin of what I believe to be wrong so that you can skip the rest if you understand. Also I do not claim to be the end all know it all because most all of my career has been writing backend processes not the front end.
I am going to writ this as if you know nothing about video because I don' know your knowledge level so please do not be insulted.
A monitor is made of of varying numbers of points of light depending on your resolution. Each point of light is made up of 3 colors, red, green and blue even though sometimes the blue is left off and the illluminance is used but that is a whole other story.
So in fact there are 3 what some might be confused to be pixels but the red, green and blue are only to represent one pixel.
So if years ago you had a 800 x 600 monitor, your monitor would have 480000 pixels. This would be the number you would use to calculate the new lengths for the larger monitor. Today now that a monitor can display so many resolutions and they are not always exactly the same as in the past the define the resolution in the same order we did above. Today a screen that maxed out a 800 x 600 would be referred to as a 480KPixel monitor. Now a typical TV is 10 MPixel but your not aloways assured of the exact resolutions it will produce based upon a different number of pixels horizontally and vertically than another monitor which still when multiplied together gives you 10MPixels.
If your resolution is 800 x 600 but you are hooked up to a 1024 x 768 then you would calculate the vertical length of the line for the new monitor by using the static value of both the denominator and numerator of the 800 x 600 screen but using only the numerator of the new resolution and substituting y for that value. Remember algebra.
I might add the calculation I am doing is going to keep the length of the line the same on both monitors, not enlarge the line based upon the larger size of the second monitor. To do that you would just calculate a ratio between the 2 screens and adjust accordingly.
So we had a line that was 200 pixels long along on the vertical axis(y) of the 800 x 600 screen and the line was 50 pixels wide along the horizontal axis(x). So to find their relative value we set up the formula below
Now to calculate the x or width value by setting up the ratio below know that the width on the new monitor is 1024 and placing below it the value x to calculate the associated value for the 800 x 600 resolution..
800/50 = 1024/x
800x = 50 * 600
800x = 30000
x = 30000/800
x = 37.5
So the width on the new monitor will be 37.5 and the line should be the same length but in the past couple of years some things have changed that can mess this up. I will discuss further in a moment.
We now calculate the height.
200/600 = y/768
600y = 200 * 768
600y = 153600
y = 153600/600
y = 256
So the height on the new monitor should be 256 and look to be the same length.
Just to point out a couple of problems:
Where would we have started the new line on the new monitor. The natural answer would be that the original started at x and y so do the same calculations to determine the starting point and that would be correct if all were equal in the world.
Back when monitors mad their entrance it was decided that their would be 72 pixels per inch and everyone that I know of stuck to that for many years. you even had build in functions that would give you the spect ratio of the screen and make calculations very simple. The aspect ratio being the difference between the width and the height and you had you Dots per inch they actually called it to do your calculations. I assume they used the world dot to include the 3 RGB colors when dots per inch were the same as pixels per inch. It was not until the resolutions became so great that by increasing the number of pixels per inch gave a better picture and so some years back monitor manufacturers and TV manufacturers built in the ability to change the number of pixels per inch. I can actually change mine on my laptop. You could no longer depend on the OS functions that gave you the aspect ratio or dots per inch. So yo wrote your program for 72 dots per inch and if someone changed their setting or it came default at a greater setting they got weird results.
Then then last thing that could be doing is is a faulty formula that you don't notice a problem until it get so big or only certain criteria cause the function to calculate the coordinates wrong.
I might also add that I don't know how I got in this Intel Embedded Community and I am not sure what I was suppose to do. Is there code I am suppose to look at or just right this article?
I will be glad to look at the code.
800/50 = x/768
Now for our example the length of the line
Your ratio is then 256 : 600
So to draw that lines vertical height would be 1/256 * 256 on the knew screen it would be x 256
With a monitor you can attain different resolutions. The resolution is basically the number of pixels on the x axis multiplied by the number of pixels on the y axis. Depending on your maximum resolution if you do not have your video set at the max them pixels are combined to for the correct resolution.
The problem can lye in a couple of places.
First is the aspect ratio.
Hello and Welcome to the Intel® Embedded Community
Anthony, thank you for sharing your detailed knowlege on the topic. IEGD and graphics in general are among the most popular community discussion topics. I think you can anticipate that someone else will help towards an answer. We also have an experienced Intel expert who regularly contributes his expertise to the community on IEGD related matters.
J. Felix McNulty
Community Moderator (Intel Contractor)
When you use DVI, we generally will output whatever resolution is requested and let the monitor do the scaling. In that case it would be the monitor not handling the resolution requested. GMA may have an intermediary scaling that is occuring that allows the output to appear correct when you try to use a mode on the display that is not the native mode. Or for some odd reason we may be triggereing some sort of hardware scalling on the Chrontel that is blocking the monitor scaling.
It would be helpful to know the exact mode/resolution that seems to have the problem including what the monitor thinks the resolution that is being displayed (many monitors have an info option on the monitor menu).
You could also try overtly disabling the IEGD scaling option to see if that changes anything on the probelm modes. You can do that in CED, OR through a manual tweak of the INF used to install IEGD, or if you are really savy, you could track down the active display regestry entry and tweak the scaling option there (but this is more dangerous than just reinstalling the driver with an updated INF.)
Hope this helps.