This is a temp post and will describe possible future feature.
As many of you know, Intel stopped EMGD roadmap for our devices so actually we can only try to set only workaround solutions. Anyway this week-end i spent some time reading all pubblic datasheets for our US15 platform and looking for some new idea. Who have some solution for our GPU can write a comment!
Here i will upload miscellaneous tips specific for embedded system (compact and not, included XP) or windows 7.
The version for Embedded compact system uses XP video driver model (XPDM) so many settings aren't applicable to windows 7 (require WDDM driver)
MSDN specs: HERE
-Selecting RAM usage for Embedded compact system
-IEMGD Add-on build 0.3 : Minor update
-Intel Decoding Video Dll
-Intel Metro Framework
Ram usage (Embedded Compact):
system resources with the operating system or statically by pre-allocating a block of
system memory to be used exclusively by the graphics driver.
To configure the driver to operate using static video memory, two registry settings
“ReservedMemoryBase” and “ReservedMemorySize” need to be enabled and defined
with valid values. These two registry entries control the start address and size of the
memory range pre-allocated for graphics driver use. The pre-allocated memory range
should include the stolen memory (BIOS setting). For the Intel chipset or processor,
this feature does not reuse the stolen video memory reserved by BIOS. Intel
recommends getting BIOS to limit this to the smallest size as this memory is wasted
due to some combined OS and hardware limitation.
For example, on a system with 512 MB of system memory and 4 MB of stolen memory
(BIOS option), if an additional 14 MB of graphics memory (for a total of 18 MB) is
desired, these settings should be used.
These settings indicate that the managed graphics memory pool will begin at physical
address 0x1E400000 (484 MB) and will be 18 MB in size. The base address,
“ReservedMemoryBase,” is the physical system address value and the stolen memory
from the BIOS settings is included.
Check the platform you are using to ensure you have all the stolen memory taken into
account. For example, in the case of the Cobra board that uses Intel's ACSFL firmware,
2 MB of stolen video memory needs to be included in this configuration. Always
remember to include the amount of stolen memory in this number.
Besides the registry entry, the Platform Builder working project also needs to be
updated to ensure that the kernel does not try to access this stolen memory. Two items
in the config.bib of the project workspace need editing: the NK image/RAM memory
partitioning and the memory reservation list. Using the example of the registry
configurations above, the kernel would have to be configured not to use the physical
memory above the 484 MB mark since that's where the static video memory begins.
Thus, the total of the NK image and the system's available RAM must be no more than
484 MB, so you must change your config.bib accordingly:
NK 80220000 009BE0000 RAMIMAGE ;14 MB for nk.bin + misc.
RAM 80C00000 1DA00000 RAM ;42 MB for RAM
The NK.BIN image plus the lower conventional memory DMA buffers used by Windows
Embedded Compact 7 takes 10 MB; 474 MB is for the RAM. Thus, the memory area
above the 484 MB mark is untouched by the kernel and will be used by the display
Two additional optional registry settings are available to limit the framebuffer size of
the display driver and the total size of offscreen video surfaces.
The MaxFbSize registry entry will control the maximum size of the framebuffer only.
Actual usage will depend on the mode being used.
The PageReqLimit registry entry will control the total size in pages (4 KB) of all video
surfaces, buffers allocated for any use. Both of these registry configurations apply to
both the static as well as dynamic video memory management explained in the
previous section. The default below indicates that a maximum of 2 MB are used for the
framebuffer and a maximum of 16 MB are permitted for all offscreen videosurface
In the case of Microsoft Windows Embedded Compact 7, because the OS does not allow
for dynamically setting the framebuffer size, the MaxFbSize can be changed to match
the mode setting being used in order to minimize on video memory waste. The
following are different suggested values for MaxFbSize for different display modes.
These values have not been validated. Note that 640x480 is calculated as 640x512 and
800x600 is calculated as 800x768 for stride alignment purposes.
640x512X16 = A0000
640x512X24 = F0000
640x512X32 = 140000
800x768X16 = 12C000
800x768X24 = 1C2000
800x768X32 = 258000
1024x768X16 = 180000
1024x768X24 = 240000
1024x768X32 = 300000
1280x1024x16 = A000000
1280x1024x32 = A000000
Another two optional registry entries determine a minimum width and height that allow
video surface allocations to succeed.
In Windows Embedded Compact 7 GDI, video surface allocations can happen with a
REQUIRE_VIDEO _MEMORY or a PREFER_VIDEO_MEMORY flag. The following options
will force surface allocations with the PREFER_VIDEO_MEMORY flag to be allocated in
system memory if the width and height are lower than stated.
The “MinVidSurfX” registry entry defines the minimum width of a surface allocation for
it to succeed with video memory. “MinVidSurfY” defines the minimum height. The
surface allocation will succeed if either the width or the height is at the required
n this example, surfaces allocated with the PREFER_VIDEO_MEMORY where the width
and height are both less than 16 pixels are forced to be in system memory.
This option increases performance of the display device as smaller video images, such
as icons, would be kept in system memory and only blitted onto the visible frame buffer
when they are needed. This ensures optimal use of the display device for larger video
surfaces where acceleration makes sense.
System to Video Memory stretch blits are not natively supported on Intel GMCH
devices. This feature allows you to enable a soft copy of system surfaces to video
surfaces to conduct an accelerated stretch blit. The advantage is that the stretch blit
uses the blend engine and hardware filtering can be applied. The filtering options are
listed in Section 6.2.2.
A value of 1 for the “SysToVidStretch” enables system-to-video stretch blits, as
described above, while a value of 0, disables this feature and forwards all system to
video stretch blits to the emulator provided by the operating system.
switch it on, add these registry settings:
Note: Always turn on Text Anti-Aliasing when using a TV display device
While XP driver supports upscaling feature seems that 7 edition don't. Anyway on Win 7 datasheet there is the possibility to upscale CH7308 LVDS Trasmitters and the procedure should be also compatible with EDID-less pannel
In Windows 7, upscaling is supported through the CH7308 LVDS transmitter. When a
lower resolution (compared to native resolution) is selected, the panel will be scaled to
fit the panel while maintaining the aspect ratio.
The Intel ® EMGD can upscale lower-resolution modes (those smaller than the size of
the respective panel) to the native size of the panel connected to a Chrontel CH7308*
The Intel ® EMGD uses a user-supplied DTD with the native flag set (also known as
native DTD) as native timing for the panel connected to a CH7308 transmitter.
If the user does not supply a native DTD, Intel ® EMGD uses 1024x768 as the default
native timing and 800x600 and 640x480 as built-in standard timings.
To support upscaling, the LVDS transmitters require setting the pipe to native timing of
the panel despite the user-selected resolution. It also requires finding the native timing
(also known as native DTD) of the panel based on user-supplied configuration
The CH7308 (sDVO) port drivers limit the list of supported modes to the size of panel.
The port drivers also mark one of the timings as native DTD as follows (it goes to the
next step only if native DTD is not found in the current step).
1. It finds the timing with the user-defined DTD with the native DTD flag set. This
becomes the native DTD for the panel.
2. If the panel is an EDID panel and user selected to use EDID DTDs, then the port
driver marks the EDID DTD as native DTD.
3. If the user supplies a DTD without the native DTD flag set, then the port driver
marks this one as the native DTD.
4. If none of the above steps works, the driver uses 1024x768 as the default native
timing and 800x600 and 640x480 as built-in standard timings.
The Internal LVDS connected to an EDID Panel supports scaling of modes other than
native mode. To support this, the port driver exports information to the EDID parser
that it can scale. The EDID parser does not remove other modes (that is, non-native
modes) from the mode table. It only marks the native mode. When the Intel ® EMGD
queries the port driver on which modes are supported, the port driver then removes
any modes that cannot be scaled (up or down depending on the port's hardware
capability). When mode-setting occurs, the second display in Clone mode can indeed
support non-native modes even though the panel had EDID. This occurs only if a native
mode can be found the port driver can scale. Otherwise, the port driver ignores the
scaling information and the Intel ® EMGD proceeds normally.
The driver also supports Internal LVDS Scaling on EDID-less panels. The steps that
enable this are the same as those described for the scaling of Chrontel LVDS
Panning Mode: I don't know if can be usefull for someone but this feature isn't upscaling is only a zoom. The panning mode allows you to set a resolution that is larger than the native
resolution of the display panel.
Registry keys for Scaling Mode:
There must be multi %display Key% exist, you should find out the one you are using. This is easy, you can delete all keys first, and then change your current monitor's setting. There will be a new key automatically created and that's your display. Below is the scaling value options:
2: Center Image
3: Full Screen should be set
4: Maitain Aspect Ratio
What i think about 1024x600 display at 1024x768 (downscaling):
While IEMGD XP version and Intel Official Win 7 support this feature. I'm a littlebit confused with IEMGD 7\8\10 edition. I will try to check if is possible but this an hobby not my work :D
Possible solution: Read Up or Panning+Scaling?
Other GMA GPUs support this feature via downscaling registry key editing (applicable also with Change Netbook Resolution application) or via INI editing (before the installion of the driver)
IEMGD Add-on build 0.3 : Minor update
The work will start after internal test about rev0.4 if nothing will be added to rev0.4 probably this version will not released. Mainly in build 0.3 will be updated menu GUI and integrated external profiles.
Add direct support for Win10
Intel Video Decoding Dll
Result: Found Package from Sony servers..i will take a look
Intel Metro Framework:
Looking new Intel Drivers for other GPUs i see that developers add these dlls. I will take a look.
As we know Win8\8.1\10 aren't compatible with IEMGD OpenGL resource. The possible solution is MESA3D library but isn't hardware accelerated. Testing similar Us15 platform no one dll is compatible
Hardware rendering isn't possible, anyway is possible to install this library with CPU deconding. Probably need fixes to load correctly this source. HERE
External test in Win 8.1:
-PowerVR comparison structure: 535(GMA500&600) vs 545 (GMA 3600vs3650)
-dxva2.dll downgrade to win7 dll doesn't bring better performance
-Vertex Software Rendering
Graphics Rendering Registry
This post will updated in few hours\days. (SOURCES by INTEL)