IEMGD EDITOR: Basic GUIDE


Questa guida ha come scopo quello di fornirvi le "BASI" per generare un driver IEMGD sulla suite per MS Windows 7 ma non si sostituisce alla documentazione ufficiale!
L'esempio qui sotto è sviluppato per ASUS 1101HA\1201HA (per gli altri modelli di device il procedimento è simile).
Nota.Qui utilizzeremo i profili già disponibili
Iniziamo:
1.Installate da questo sito il compiler Watcom (eseguite un'installazione full)
2.Installate il Kit Sviluppo EMGD per Windows 7 (la versione del programma per xp è leggermente diversa)
3.Avviamo e familiarizziamo col programma (gode di un'ottima grafica semplice e con poche opzioni):

4.Selezioniamo la Configurazione 6x4.cnfg (quella per il monitor del nostro netbook)
-LVDS (Low-voltage differential signaling) è la voce che si riferisce al nostro monitor
-Aggiungiamo alla lista di destra la voce sDVO (Serial Digital Video Out) per aggiungere il supporto all'uscita VGA e selezioniamo "Next"
5.Selezioniamo da Custom Display Timing la risoluzione massima con quale il driver si avvierà (dipende dal vostro monitor su Asus 1101-1201HA è 1366x768)
6.Selezionamo Attribute Settings (per molti netbook saltare questo punto)
Possiamo vagliare diverse opzioni ma quella che interessa a noi è la frequenza dell'inverter che è calcolata in Hz (dipende dal vostro computer), immettiamo il valore desiderato e selezioniamo Finish
7.Passiamo alla configurazione uscita VGA\HDMI\Ect
Selezioniamo il Chip dedicato, che per ASUS 1101HA è il Chrontel CH7317A, e  Use driver built in timing + Use EDID Display if avaiable

8.Ora andiamo alla voce Package
Eliminiamo la voce Video BioS e aggiungiamo Windows7 per la creazione dei driver
9.A questo punto selezioniamo il pacchetto che dobbiamo creare e clickiamo Generate Installation
Il Driver è nella cartella IEMGD\Workspace\Installation\multiPB.pkg_installation\
Basta scompattare l'archivio zip e sarete pronti a installare il vostro driver ;)

                                        -Complimenti! Adesso leggete le guide sul sito intel!!!!-
Tavola dall'User Guide:
_______________________________________________________________________________
DEVELOPERs:

1)Generic: Multipackage; Freq:0
2)Asus: 6x4 profile;1366x768; CH7317; Freq:20300
3)Sony Vaio P: Add DTD 1600x768; CH7317; Freq:300
4)Dell Mini 1010: HDMI Silicon 1392; Freq:0
5)Acer 751H: CH7317; Freq:20300
6)Viliv N5: 10x6Sam Profile; 1024x600; no video output
7)Viliv S5: 10x6Sam Profile

-  Panning Mode:  Use resolution that is larger than the native resolution of the display
-  Dither
-  OpenLDI

DTD Page: This page requires specific values basing on your Monitor Panel DataSheet
For this reason generic drivers can't be 100% setted for your device,without  EDID, because it's impossible to know which kind of panel uses Asus,Dell or Sony ect. in every product and also in the same line product: for ex. not all Asus 1101HA have the same Monitor Panel).
Anyway if you don't see any artifacts on the display can use generic settings.
Generic Pixel clock frequency = HTOTAL * VTOTAL * Vertical Refresh Rate / 1000000
HTOTAL = HACTIVE + HBLANK_BACK PORCH + HBLANK_FRONT PORCH
VTOTAL = VACTIVE + VBLANK_BACK PORCH + VBLANK_FRONT PORCH

Output names based on informations available on http://notebookschematic.com/
Supporto video output IEMGD:
CH7022 SDTV-HDTV Encoder
CH7307 DVI
CH7308 LVDS
CH7315 HDMI
CH7317 VGA
CH7319-CH7320 Dual Port DVI
Silicon Image SII 1362
Silicon Image SII 1364
Lapis Semiconductor ML7213
STM IOH ConneXt
Display Attributes:
Read your model's name with AIDA64 and after search datasheet on google
Asus 1101HA LCD: Chi Mei N116B6-L02 Rev.C2
VideoBIOS: (Introdution to vBios)

Primary Dislay Mode:
Standard Modes on Asus 1101HA: Use Default (better) or set a 16bpp value like 800x600.
Primary Non-standard Modes: Should be 1366x768 but on datasheet there isn't any value for this res.
Secondary Display Mode on Asus 1101HA: Leave Default
Power On Self Test: First screen after power on your device. Write anything you want (i usually leave it blank
5F Function: Select which your device support (ASUS 1101HA not support it)
Common to port: Allow the vBios to get port informations from Bios 

VideoBios flash on AMI BIOS for US15 Platform (Vendor ID:8086 Device ID:8108) 
Ingredients: MMTool; system BIOS; video BIOS; Bios flasher; Pendrive

1)Open with MMTool your bios (Load ROM)
2)Select Replace Tab
3)Select ID20 Option Rom as in picture (be sure that ID is GPU)
4)Select Browse (path of  VGA.bin compiled with CED) and after Replace
5)Save ROM or save ROM as...
6)Flash with your BIOS utility  (on Asus 1101HA series copy modded rom into a pendrive and change name in 1101HA.ROM. Restart PC and on boot press ALT+F2)

Driver Package for Windows 7:
e6xxdispext.inf   NOT for US15
e6xxdispext.sys NOT for US15
hccutils.dll
hkcmd.exe     Intel Tool (hotkey)
igd_XA.cpa
igd_XA.vp   
igd_XC.vp
igd_XO.vp
igdkmd32.sys  Main Driver File
igdkmd32.vp Kernel Module
igdlh32.inf        Installer Configuration 
igdogl32.exp    OpenGL file (useless?)
igdogl32.lib      OpenGL file (useless?)
igdogl32.dll      Main OpenGL 2.0 File
igdsgl32.dll      Main OpenGL 2.0 File
igdumd32.dll    WDDM directly linked to sys file
igfxcfg.exe        Intel Tool 
igfxcpl.cpl         Intel Tool (Control Panel File)
igfxdo.dll
IgfxExt.exe      Intel Tool
IgfxExtps.dll    Intel Tool
igfxpph.dll
igfxrENU.lrc       English Intel Tool
igfxres.dll            (useless?)
igfxress.dll          (useless?)
igfxressENU.lrc   English Intel Tool
igfxsrvc.dll           Intel Tool
igfxsrvc.exe         Intel Tool
igfxtray.exe         Intel Tool Tray Icon
libmfxhw32.dll    NOT for US15: Intel MediaSDK library

Driver Package for Windows XP:
ch7036.sys  video-output driver for Chrontel model 7036
ch7036.vp Voucher file for COPP
iegd.inf Driver Configuration File
iegd3dga.dll Direct3D support Dynamic Link Library
iegdcagt.cpa Agent for COPP
iegdcagt.vp  Voucher file for COPP
iegdckey.vp Voucher file for COPP
iegddis.dll Display Driver
iegdglga.dll OpenGL
iegdmini.sys Main Driver File
iegdmsys.vp Voucher file for COPP
libGLES_CM.dll OpenGL ES 2.0
libGLES_CM.lib (OpenGL ES useless file?)
libGLESv2.dll OpenGL ES 2.0
libGLESv2.lib (OpenGL ES useless file?)
lvds.sys Port driver for Internal (GMCH) LVDS
lvds.vp Voucher file for COPP
sdvo.sys Port driver for SDVO devices
sdvo.vp Voucher file for COPP
softpd.sys Port driver for VCH devices
softpd.vp Voucher file for COPP


INF Parameters:
Useless: Memory and max devices connected not working on US15, FeatureScore (this key tells to windows if a driver is designed for an OS and if is better than an other),Pcf version default 700 (the other value is 400) don't change it!

_________________________________________________________________________________
Extras:
UEFI\EFI  ENG - ITA - VIDEO
Overlay function for Windows XP: (a technique to hold the decoded video frame only for XP,linux and Meego):
1)Intel ® EMGD offers a video overlay feature to speed up video display
2)Framebuffer blending of 3D graphics with overlay does not cause any significant increase in CPU or GPU usage compare to other methods such as compositing and works with OpenGL,OpenGL ES,Direct3D.
3)The media application needs to play the video using the overlay plane. Most applications, by default, play video in overlay
4)This feature reduces the amount of CPU cycles to achieve video and the 3D blending effect compared to programming on a standard operating system API.
5)Problem: Black corruption in some display element
Under windows xp is fixable with 2D Alpha Override Feature but:
A)Minor increase in CPU usage due to the overriding operation
B)Windows XP display must be set to 32 bits (I hope no one is using 16 bits)
C)Microsoft WHQL may fail if it is tested when this feature is turned on
D)This feature will slow down 2D operation slightly. Most of the time it is not noticeable to the user
How to translate Installation Package: Add Lang Package to Driver's Archive Path\Lang\LPCO\

Windows Registry Driver Initialization Keys:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\CMO11000_09_07D9_65^7C5B51B4D1A3124A0D6C4D020E28B7E6\00\00
-> Hexadecimal values are in (VALUE) and as you can see are for 1366x768 display
To update the new value just disable gpu and then renable it from Device Manager (should be sufficient also a  Windows restart).
PS. If you find something useful to edit post HERE!

VGA\HDMI Port AutoDetection:
HotPlug Function:Sometimes reading of EDID may fail, especially when the user wiggles the connectorwhile attaching the display. You can try to fine tune the  HotPlugDelay timing to suit
your usage, within the range from 100ms to 1000ms with stepping of 10ms. Note that
setting the  HotPlugDelay value too low may prevent the monitor from being
detected, while having the value too high will lock the system longer before detecting
the monitor. Recommended default value is 550ms.
The hot plug feature is supported for single sDVO or dual display setup; however, note
that the hot plug feature does not apply for the LVDS transmitter.
This parameter is used to enable or disable the
hot plug feature for an sDVO port. Default 550ms
Unit in ms Range 100-1000ms

Note. So possible solution for VGA port AutoDetection is improve the value 550ms. I will test all other possibity, if you want can try at your own and report!, values are a lot from 560ms to 1000 (+10ms steps)

PortHotOverride: The  PortHotOverride control is used to keep a specified display port constantly on,
irrespective of whether the specified display monitor is connected.
Note: There is a potential risk in enabling this registry key. The default driver is designed to
have unused ports closed rather than open/hot; in some rare cases it can do damage to
the hardware. This is not a substitute for hot plugging and should not be used as such;
repeated removals and connections will cause stress to the card.
Setting this registry key allows the system to boot up in headless (without a monitor)
condition and then, when the monitor is plugged in, the display is visible. When a
monitor is connected, the configuration information for the monitor should be already
part of the driver.
Enable “Port Hot” Registry Location:
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LPCO\PortHotOverride]
Enable “Port Hot” Key:
“DeviceToLeaveHot”=dword:0002 [or alternative value shown below]
Other potential DWORD values:
TMDS0 0x0001
RGB0 0x0002
CVBS0 0x0004
SVID0 0x0008
YPRPB0 0x0010
SCART0 0x0020
LVDS0 0x0040
TMDS1 0x0100
RGB1 0x0200
CVBS1 0x0400
SVID1 0x0800
YPRPB1 0x1000
SCART1 0x2000
LVDS1 0x4000
TV0 0x003C
TV1 0x3C00
Note: Only the VGA device RGB0 (0x0002) has been validated internally

Test fails: This entries key works but doesn't change the autodection situation. No other idea to fix this little bug. Workaround to open VGA port are: Simple Right click on intel trayicon or open Intel tray icon or press win+P and select an option or run c:\windows\system32\igfxcfg.exe
Other possibility is to enable porthotoverride and enable igfxcfg.exe system autorun manually (but this solution isn't a cool )

Ram usage (Embedded Compact):

The driver supports the ability to allocate graphics memory dynamically by sharing
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.
“ReservedMemoryBase”=dword:1E400000
“ReservedMemorySize”=dword:01C00000
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
driver.
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
allocations.
"MaxFbSize"=dword:200000
"PageReqLimit"=dword:1000
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
minimum.
"MinVidSurfX"=dword:10
“MinVidSurfY”=dword:10
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.
[HKEY_LOCAL_MACHINE\Drivers\Display\Intel\ALL\1\General]
"SysToVidStretch"=dword:0

 The Microsoft Windows* Embedded Compact 7 driver supports text anti-aliasing. To
switch it on, add these registry settings:
[HKEY_LOCAL_MACHINE\System\GDI\Fontsmoothing]
[HKEY_LOCAL_MACHINE\System\GDI]
"ForceGRAY16"=dword:1
Note: Always turn on Text Anti-Aliasing when using a TV display device

Upscaling\Downscaling\Panning:
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*
LVDS transmitter.
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
information.
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:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\%display Key%\00\00\
"Scaling"=dword:3
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)

Intel Video Decoding Dll
This source are not available for not Intel premium account. So we should try to look on web if someone upload it.
Package:
• mpeg2_dec_filter.dll
• mpeg2_spl_filter.dll
• mpeg4_dec_filter.dll
• mp3_dec_filter.dll
• mpeg4_spl_filter.dll
• h264_dec_filter.dll
• aac_dec_filter.dll
• ac3_dec_filter.dll

Result: Found Package from Sony servers.
--------------------------------------------------
Some cheats: Exported from EeeCtl and are replicable also with RWeverithing program
/* kiwidrew's work */
#define EC_ST00                         0xF451 // ACPI: Temperature of CPU (C)
#define EC_SC02                         0xF463 // ACPI: Fan PWM duty cycle (%)
#define EC_SC05                         0xF466 // ACPI: High byte of fan speed (RPM)
#define EC_SC06                         0xF467 // ACPI: Low byte of fan speed (RPM)
#define EC_SFB3                         0xF4D3 // ACPI: Flag byte containing SF25 (FANctrl)

#define GPIO_PIN_VOLTAGE        0x0066 //

#define EC_FPWMH1                       0xFE26
#define EC_FPWML1                       0xFE27

1)Legacy Backlight,WORKS ONLY ON WINDOWS XP
This info was present also in intel documents
Path: Bus 0 Device 2 (Intel VGA Card)
Path where insert Brightness Level:  0xF4
Value Setted by EeeCtl:
UltraBright: FF the maximum value for brightness
Bright: B2
Medium: 7F
Low: 4C
Lowest: 19

Accepted values: 1-99 (1-15=really low values) and combination 0;1;2;3;4;5;6;7;8;9; A;B;C;D;E;F

2)Registry Settings for Win 8-10 that I have to test: (i reported here to remember them)
(Because newer Os uses DWM and should be a problem for GMA500)
-RTL_REGISTRY_CONTROL\GraphicsDrivers\Scheduler\VsyncIdleTimeout 
REG_DWORD 10 = default ;  0 = disable VSync control
RTL_REGISTRY_CONTROL is the same as HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl
-HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration 
DWORD value 1=Disabled Hardware acceleration ; 0=Enable Hardware acceleration
-HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\MaxMultisampleType
DWORD Value min0 max16
Default: 4 
-Brightness check HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Services\ Monitor\ Parameters\

OpenCL Compatibity:
Hardware rendering isn't possible, anyway is possible to install this library with CPU deconding. Probably need fixes to load correctly this source. HERE

Link:
DTD Calculator
Graphics Rendering Registry
BCEdit Settings

2 commenti:

  1. Volevo fare dei test ma non trovo più l'editor. Potresti upparlo da qualche parte?

    RispondiElimina
  2. Ecco a te la versione win7 1.18: https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=22715
    Buon Test!

    RispondiElimina