What is "Snapshot" and "Use host GPU" emulation option(s)? - IDEs, Libraries, & Programming Tools

The Snapshot option speeds up the boot of the emulator by saving a snapshot of its RAM once it has booted, and restoring from that snapshot on future uses. That way, it doesn't have to run the boot process (which is slow, because it's emulated) every time you start the emulator.
The Use Host GPU option uses the host computer's OpenGL implementation (which is probably hardware-accelerated, on your real GPU) to evaluate OpenGL commands inside the emulated system. Put another way, when a program inside the emulator uses OpenGL for graphics operations, the work goes out to your real GPU, and the result goes back into the emulator, instead of emulating a GPU (which is very slow). The result is a significant speed-up, especially when you consider that most view and canvas drawing uses OpenGL in Android ≥ 4, even in non-graphics apps.
You can't have both options turned on at once.
For more information, see the source link

Related

Direct Draw... what gives??

I remember when applications where first being written to use direct draw on the ppc... we were told it would have a great improvement over older apps with video frame rates and code efficiency.
So, why is it that some newer devices (such as the Titan) have WORSE performance using Direct Draw apps than older devices with slower CPUs?
My experience with DD coding is slim to none, but as I understand it, isn't direct draw just a driver to allow for standard graphic routines with varying non-standard hardware?
Did HTC just write some bad drivers for the new hardware? Or is it something deeper? Benchmarks on the hardware yeild above-average graphics performance, and programs (such as TCMP) run fine when direct draw is disabled. So, it seem DD is the culprit. Why would this be?
no comments on this?

OpenGL and Renderer

Ok im trying to set my program to use OpengGL and i have some questions to thos who know more then i.
Right now my main question is if the Render.OnDrawFrame() is run in a continous loop? I have looked through the official documentation but it doesnt say much. And from this is anything drawn in this function immediately drawn to teh screen? or it as if there was swapbuffer at the end?
Next if i were to do all drawing natively could i simply bypass using the Rendering class all together and manage everything myself?
Well, this thread is a little old, but it's still open and I'd like to discuss a little openGL too.
The Renderer is like a separate thread, once you set the renderer object it will run based on what you define with the setRenderMode(int) method.
From the Android decumentation:
Rendering Mode
Once the renderer is set, you can control whether the renderer draws continuously or on-demand by calling setRenderMode(int). The default is continuous rendering.
Click to expand...
Click to collapse
Managing all the rendering by yourself, without using the standard classes, might be vary challenging. But you don't need to do this to draw natively, there are ways to access native code inside the renderer.
In fact, each gl method call is a native call, you can have a nice performance boost by making only one native call inside the renderer.
Balosen said:
Well, this thread is a little old, but it's still open and I'd like to discuss a little openGL too.
The Renderer is like a separate thread, once you set the renderer object it will run based on what you define with the setRenderMode(int) method.
From the Android decumentation:
Managing all the rendering by yourself, without using the standard classes, might be vary challenging. But you don't need to do this to draw natively, there are ways to access native code inside the renderer.
In fact, each gl method call is a native call, you can have a nice performance boost by making only one native call inside the renderer.
Click to expand...
Click to collapse
Very old indeed!
Yes that is exactly what i did actually. in my onDrawFrame() i call a native method where i do all of the actual drawing(had alot of pre-existing code that made this more practical).

Full Honeycomb SDK now available

Let the ports commence
I would prefer to have CM7 Gingerbread stable finished so that we can have something. Porting Honeycomb will be a hard endeavor, and I think the manpower of the modding community of the Vega-ViewSonicGTablet-POVMobii-WhatsItsNameAgain is not too big. I'd rather encourage them to continue what they're doing right now and keep an eye open for a later chance to port the Bee.
bit worried about the scaling issues of 1024 x 600 ran in emulator
problems so far
- scaling on home screen (google search cut off at top)
- apps are a bit large in drawer
- adding widgets/wallpapers/shortcuts function does not scale properly in this res.
ps great fun with the emulator but my god does it run slowly on my laptop for some reason even assigned with 512mb ram :S
wobblydoggy said:
bit worried about the scaling issues of 1024 x 600 ran in emulator
problems so far
- scaling on home screen (google search cut off at top)
- apps are a bit large in drawer
- adding widgets/wallpapers/shortcuts function does not scale properly in this res.
ps great fun with the emulator but my god does it run slowly on my laptop for some reason even assigned with 512mb ram :S
Click to expand...
Click to collapse
Don't worry about the speed - it's due to the emulator emulating the arm architecture and more.
Also, the scaling problems are probably happening because the SDK image was created to a higher resolution - maybe 1280x800, which our tablet does not have.
If LCD density is set to 120 in emulator it works fine

[Android 2.1+][03.10.2011][v3.2] Chainfire3D [ROOT][OpenGL ES 2.0+]

OpenGL Configuration Guide
So how does one configure Chainfire3D the best way possible ? It is easy if you know what you are doing. By default, you want to enable as little as possible.
Basics
As stated, you want to enable as little as possible to make apps work the way you want, as the more you enable, the more CPU Chainfire3D will use to do the work.
IMPORTANT #1: Simply enabling all the options is counterproductive, unless you know you need them all.
IMPORTANT #2: Enabling both "Reduce texture quality" and "Unroll textures" is quite a silly thing to do. Read their descriptions, and think about it for a minute
Both options are available because performance-wise, on some hardware one is better, while on other hardware the other is better.
IMPORTANT #3: "Reduce texture size" is NOT compatible with a LOT of apps. If you are seeing weird things, this setting is likely the problem.
(1) When starting out, you simply shouldn't enable anything. When running an app, and it doesn't work as expected, first go into the configuration and see if there is a plugin (only) you can use to make it work better.
(2) If there is no plugin or you are not satisfied with it, try the "Reduce texture quality" option to see if it improves performance. This is the most "compatible" option to use. Though texture memory use is cut in half, often you don't see a big difference (or any difference at all even) in the end-result being displayed on screen.
(3) Alternatively, try the "Unroll textures" option. Be sure to UNcheck the "Reduce texture quality" option when using this.
(4) As last resort, use the "Reduce texture size" option. While this option greatly reduces memory usage and can have an awesome speed improvement as result, it is NOT compatible with a LOT of apps.
(5) If performance is adequate, try enabling the MSAA feature to improve visual quality.
Specifics - Free version
In the free version, you can only configure the "default" settings, so you'll likely be in the Chainfire3D configuration tool a lot. I strongly advise that when you are NOT using Chainfire3D for something specific, you disable all the options. This is better for system performance.
Specifics - Pro version
In the pro version, I strongly advise disabling ALL the options under "default" settings, and ONLY use "per-app" configuration. This will greatly reduce the chance of conflicting settings between different apps, which does actually happen a lot ! It is also the best possible configuration you can have performance-wise.
INSTALL ON HC/ICS/JB AT YOUR OWN PERIL ! - ITS NOT SUPPOSED TO WORK ON THOSE
SGS2 USERS: Upgrading to KG1 (2.3.4) or newer ROM will fix additional graphics glitches, if you are running an older SGS2 ROM.
About
Chainfire3D is an intermediary OpenGL driver. What does that mean? It means that Chainfire3D sits between your apps and the graphics drivers, and can intercept and/or change commands between the two. It has some built-in functions, and can be further extended with plugins to provide extra functionality.
Features
- CF3D OpenGL driver
- NightMode (inspired by Jeff Sharkey, more info here)
--- Handy shortcut to toggle on/off
--- Supports red, green, blue, amber, salmon and custom (pro only) modes
- Global OpenGL manipulation
--- Reduce texture size
--- Reduce texture quality
--- Unroll textures
--- BGRA emulation
--- Load plugins
--- Replace shaders
--- (Pro) Disable Chainfire3D detection
--- (Pro) Dump all shaders
--- (Pro) Force depth buffer size (EGL)
--- (Pro) Force MSAA (MultiSample Anti-Aliasing) (EGL)
- (Pro) OpenGL manipulation on a per-app bases
- (Pro) Fix market settings
- (Pro) Manage installed plugins and shaders
- (Pro) Backup and restore settings, plugins and shaders
A bit more detail about some features
NightMode
NightMode reduces the number of colors on your screen, which on OLED screens saves a lot of battery. The various modes (especially red) are also great in low-light conditions, as they have less effect on your night-vision than a full-color screen
Generic note about textures
The features below are only used if a texture format is supported. Natively Chainfire3D only supports raw textures, but these can be extended through plugins.
Reduce texture size
This essentially cuts (supported) textures' resolution in half, which usually reduces memory use (4x) and improves performance, at the cost of slightly reducing texture quality. This is not compatible with all apps! For many 3D apps, this works, as the GPU stretches the graphics, but it does not work for many 2D apps.
Reduce texture quality
This converts 32-bit textures to 16-bit textures, reducing memory use (2x). This will lower texture quality, but for many games the difference isn't even visible. Whether this is actually faster or slower depends on your hardware.
Unroll textures
Converts non-32-bit textures to 32-bit. This should not influence texture quality, but it does use more memory. On some hardware this is faster than using 16-bit textures.
Disable BGRA emulation
Some GPU's do not support BGRA - in this case, Chainfire3D emulates BGRA support. Developers may not expect this (i.e., hardcode features for a specific GPU) and it may cause issues. If red and blue appear swapped in-app or in-game, enable this feature, and see if it helps.
Disable Chainfire3D detection
For compatibility reasons, Chainfire3D announces to applications that it is being used. Using this feature you can turn that off.
Depth buffer (per-app only)
Some apps expect a certain depth buffer size. Without setting this, they may not run (at all). This feature should only be used if an app specifically requires it - there is a good chance apps will NOT run if you change this setting the wrong way.
MSAA (MultiSample Anti-Aliasing) (per-app only)
Enabling MSAA drastically improves image quality at the cost of performance. Lines/edges become much smoother. Available options are automatic (the app decides), 4x, and 16x. Most apps don't enable MSAA themselves at all. The ARM Mali 400 MP (used in the SGS2) can even do 4xMSAA at no performance cost. Note that if your GPU does not support the level of MSAA requested, the app will likely not start at all.
Fix market settings
Plugins may add support for various features not normally supported by your hardware. Market, however, only reports the functionality your hardware provides. Using this feature, Chainfire3D will adjust Market so it also shows apps that require the features provided by the plugins. This is not useful without the plugins
Backup and restore settings
Backup and restore all app settings, plugins, shaders, etc to/from your SD card
Plugins / API
At the moment, the Plugin API is rather limited, but it does allow for some rather interesting plugins like Tegra2 / PowerVR / ATI texture emulation (see the API docs a post below). The idea is to further improve Chainfire3D so Plugins can manipulate the entire OpenGL data stream.
Shaders
From version v1.9, you can replace app's shaders with your own modified versions. See a few posts down for further details.
Pro version
As outlined above, the Pro version adds a little bit of functionality. Purchasing it will support my efforts.
Pro version - warez
Chainfire3D Pro is available from some warez sites, if you feel like ripping me off However I should warn you that none of those versions actually work as the real Pro version does.
Requirements
- OpenGL ES 2.0 (every 1ghz+ phone has this)
- SuperUser / Root
- Writable /system (it will try to remount system as read/write when needed, but the changes need to stick between reboots)
- S-OFF ?
- Having root access from recovery is a big plus to solve problems if you run into them (run "/system/lib/cf3d_uninstall.sh" as root to remove the driver and restore the old one)
CF3D driver installation
There is some risk involved, so you should have either root access in recovery, a CWM backup, or a firmware to flash handy. Nevertheless, the driver has been tested and found working on the following devices:
- HTC HD2
- Samsung Galaxy S
- Samsung Galaxy Tab 7"
- Samsung Galaxy S II
- Samsung Epic 4G
- Motorola Atrix 4G
- Motorola Droid 2
- LG Optimus 2X
- Google Nexus S
It's likely to work on far more devices. So far nobody has reported a failed install, so that's good. Doesn't mean problems can't happen.
Download
Market link (mobile): market://details?id=eu.chainfire.cf3d
Market link (desktop): https://market.android.com/details?id=eu.chainfire.cf3d
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Note: If you were running the "CF3D :: NightMode" application earlier, you should uninstall it before installing this.
Plugins / API
Currently available plugins
There are currently no plugins available from my hand, but it appears somebody has compiled and released libGLEMU_NVIDIA, libGLEMU_QUALCOMM, and libGLEMU_POWERVR plugins. You may find them if you search for them
WARNING: I did not write, compile, or release these plugins, and thus I cannot vouch for their quality, or that they don't do anything evil to your device. You should also be aware that they may not be legal to use in your area.
Plugin installation
Plugins are .so files called libGLEMU_xxxxx.so . They should be wrapped in a libGLEMU_xxxxx.zip file. Simply put this zip file on your /sdcard, and use the "Install Plugin" option in Chainfire3D.
API
Attached is a zip file containing some information "by example" on how to build plugins. Read the README.TXT file!
Shaders
About
This might sound like voodoo to some of you, don't worry. Modern OpenGL bases apps and games run programs on the GPU (graphics card) to render the image on screen. These can be quite complicated, and they are not always compatible between different GPUs. Chainfire3D allows you to replace apps' built-in shaders with modified ones. This can potentially fix a number of issues with various apps.
Currently available shaders (ordered by release date)
SGS2 - Riptide GP - Modification by Chainfire. Disables Cube Mapping, makes the game playable
Desire HD - Riptide GP - Modification by scukoemo. Fixes rider lighting issues.
SGS2 - Backbreaker THD - Modification by Chainfire. Fixes error messages, does not fix actual display corruption
Desire HD - Riptide GP v1.1 - Modification by Pr0tEct0.
SGS2 - Riptide GP v1.1 - Modification by crypticc
Shader installation
Shaders are .shader files called xxxxx_xxxxx.shader . They should be wrapped in a shaders_xxxxx.zip file. Simply put this zip file on your /sdcard, and use the "Install Shader" option in Chainfire3D. Be sure to force kill the app you are installing shaders for - that app needs to be restarted for the shaders to be applied. TIP: Going into the per-app settings for an app and changing any setting (and back) will kill the target app.
Shaders - How to modify them (ADVANCED TECH USERS)
This post assumes you know a little bit about OpenGL and shaders. Not a lot, mind you, the shaders I modified I did with no prior knowledge of shaders.
Getting the original shaders
Chainfire3D will automatically detect shaders that do not properly compile, and dump that shader to "/data/data/eu.chainfire.cf3d/files/shaders/processname_crc32.error_dump" and "...error_log". This will generate quite a bit of output in logcat, so you know it happens. In (for example) DDMS, filter on "Chainfire3D" to see only these messages.
The error_log file contains the error message from the GPU, while the error_dump contains the shader source code. (Note that there may be too many newlines).
If the shaders do compile, but they do not actually work (or link - watch logcat to see this happen), the shaders will NOT be automatically dumped. You have to dump them manually. You can do this by going into Chainfire3D per-app OpenGL configuration and enable the "Dump all shaders" option. Chainfire3D will now dump every shader the target app attempts to compile. The file name is the same, but it's extension is ".dump" instead of ".error_dump".
Modifying the shaders
You can simply ADB pull the files out of the "/data/data/eu.chainfire.cf3d/files/shaders/" directory. Handy tip: if you do not specify a filename, ADB will pull the entire directory.
Now you can simply modify the shader files with a text editor. You may have to convert the files from unix-newline format to windows-newline format. Warning: See the limitations section, you also need to convert the files BACK to unix-newline format!
Testing the shaders
Obviously, you will need to kill the target app first, then you can push the shaders back to the device at the same location. IMPORTANT: replacement shaders need to have the ".shader" extension, instead of ".dump" or ".error_dump". Keep the rest of the filename exactly the same. If you do this correctly, Chainfire3D will replace the apps' shader with the one you just put on the device.
To let Chainfire3D be able to use the shader, note that you must also chmod 666 the file on the device.
Packaging the shaders
So you fixed issues with an app for a certain GPU by modifying a number of shaders. It'd be a shame if you kept it for yourself. Packaging them up is simple: just throw the ".shader" files in a ZIP file, and name the ZIP file as follows:
"shaders_device_targetapp_version.zip"
For example, the SGS2 shader fix for Riptide GP would be something like: "shaders_sgs2_riptide_gp_v1.zip"
Releasing the shaders
Simply post a new post in this thread, attach the shaders (or put them on a file hosting site and link them), and put the details about this shader in that post. Then PM me that you released said shaders (with a link to the post) and I can add them to the list.
Limitations
Please note the following shader limitations:
- Dumps are at most 64 KB. If the shader is larger, it will only be a partial dump
- Shader replacements must be < 64 KB
- Shader replacements must use unix-newlines
- Shader replacements must have < 16384 lines
- Each line in a shader replacement must be < 1024 characters
The awesomeness of this is so big that it almost makes bacon boring.
woot now that's cool stuff =)
Now if only somebody would be so nice to compile and post PVRTC / ATITC / S3TC plugins on an external host, you could play for example TegraZone games on your SGS2
Nice work...
You absolute legend!
This is something I'd like to try out,
too bad I'm a complete nobody when it comes to this stuff.
A step-by-step guide on how to get this running, and I say it's worth 10 bucks in donation!
EDIT:
Or wait a minute. This is no ROM? And it doesn't need any specific ROM? Just root and install? Then I'm rooting, I'm doing it!
booted without any problems on SGS2. much nice stuff here.thx .
Pro version bought! Thanks for all your hard work!
Paid for full too. Not sure how it works but guess we will have instructions when its features can be used. For now I love nightmode anyway. Thanks chainfire
bought pro an instant ago - installed fine on my sgs2
Thanks for another great app!
Gallery doesn't seem to like "Reduce texture size" option, but I use QuickPic most of the time.
SGS i9000, deodexed XXJVO
Is this compatible with voodoo?
Hm. Rooted and installed.
Some apps and games look f#cked up. Big squares instead of score windows, blue dots instead of digits... Fine example is Chuzzle. Anrgy Birds is totally unplayable, I only get the background working, nothing else.
I have tried all variations of settings possible. Even all boxes unchecked, but these games, and others, are still looking and behaving odd.
Edit;
Maybe I'm not using it right. Anyway, I uninstalled the drivers and it went back to normal. I'm waiting for thumbs up before I use this again.
Still, in theory, this is great work! Don't think I think anything else!
It doesnt even give me chance to click allow in superuser popup
and says could not acquire root cess!!
Chainfire you are awesome! I have bought the paid version immidiately and it rocks! I cant wait for tegra plugin to play some tegrazone games. Holy **** Im excited as much as I was when my first child was born! Nah kidding, even more!
Sent from my GT-I9100 using Tapatalk

[GUIDE] [STARTER] Custom Kernel Features Explained! [5/20/2013]

This is a simple STARTER GUIDE to kernel features/parameters and everything you need to know about custom kernel goodies before you consider flashing them. Now that there are a few custom kernels out there for our device, you may want to know about these.
I’d be glad if you could help me complete this guide.
First of all I’d like to thank all kernel guys who put countless hours into this to bring us the features which I am going to explain soon.
Overview:
Post 1:
A.: What you want to know about the CPU/GPU of your device
B.: Custom Kernel Features
Post 2:
Coming Soon!!!
A: What you may want to know about the CPU/GPU of your device:
Galaxy Note 10.1 features a 1.4GHz Quad Core CPU (Exynos 4412) and a 400MHz GPU (Mali-400).
More Data will be added soon.
B.1: CPU/GPU/IO Features which comes with Custom Kernels:
OC/UC (As for OverClock/UnderClock):
As you may know, CPU or any other processing unit features a clock frequency. Over/Under Clock simply means raising/decreasing the clock frequency of CPU.
Reason: Why would one need to overclock? Because one needs more processing power. For example if you want to experience smoother gameplay when playing high-graphic games.
Why would we need underclock? Higher processing power demands more battery. So underclocking helps us, reserve more battery. As for HOX, searching internet and texting don’t need much of processing power. So we can limit the processing power and save battery during low use of our device.
•Note1: OC/UC is not limited to CPU. GPU is also capable of OC/UC. And the interface for that is NOT available in the current custom kernels of Note 10.1.
•Note2: Gamers may not use GPU UC. Limiting GPU processing power impact significantly on your gaming experience.
UV (As for Undervolt):
Every frequency of a processing unit, demands a certain amount of power to be supplied. Undervolting to put it simple means decreasing the voltage of a certain frequency (or all of them).
Reason: The more voltage CPU/GPU gets, more heat will be generated. So mainly we UV to decrease the generated heat of CPU/GPU.
•Note1: One Frequency needs a certain minimum amount of voltage to perform correctly and the system be stable. Undervolting more than a certain amount of voltage will cause system instability.
•Note2: UV improves battery life by using less power. See this.
CPU Governors:
Frequency scaling is the means by which the Linux kernel dynamically adjusts the CPU frequency based on usage of the device. Governors refer to schemes which dictate to the kernel how it should do these adjustments. (From rootzwiki)
To put it simple, Governors are the way that CPU frequency is adjusted according to the demand of operating system.
Selecting a proper governor for your CPU is crucial to the performance and battery preserving of your device. For example if you are low using your device you may use a more battery friendly governor and if you want to play games you may use a more power consuming performance governor.
•Note: See Droidphile’s Great Guide about Governors to be familiar with each one of them and the ones that you should use in different situations here.
I/O Schedulers (As for Input/Output):
Input/output (I/O) scheduling is the method that computer operating systems use to decide which order block I/O operations will be submitted to storage volumes. I/O Scheduling is sometimes called 'disk scheduling'. (From Wikipedia)
To put it simple, Schedulers are the way reading and writing to the SD card is managed.
The same things that is said in the Governors part is applied here, too.
•Note: See Droidphile’s Great Guide about Schedulers here.
ReadAhead buffer size:
In terms of reading data from SD card, there is a cache which is used as a buffer. The size of that cache is readAhead buffer size. The size has a direct impact on your reading speed of your SD. So giving it a right amount is crucial.
File System “X” R/W (As for Read/Write):
Android by default doesn’t support all the File Systems (What are file systems?! See here). So some kernels may add certain file system R/W. The most popular unsupported file system is NTFS.
B.2 Features of Custom Kernels (AKA Goodies!!!):
MultiCore PowerSaving:
This feature try to group up tasks in the least cores possible. To put it simple, it will focus in using least cores for your tasks to be done. This means less cores are active and so more battery life. Also this will decrease performance.
•Note: To enable use TricksterMod app. 0 for disable and 2 for the most aggressive.
CIFS:
In order to manage your cifs/nfs network shares on your Android device you need the proper and working modules. And so you can mount/unmount your network accessible file resources and access your data.
B.3 Other Features:
Init.d Support:
There are some scripts that run every time your device boot up which are located in /etc/init.d Those are called init.d scripts. One of the most popular init.d scirpts that is available for Note 10.1 is this.
Eco Mode - NEW:
Eco Mode is an optimized dual core solution for quad-core SOC (System on Chip) like the Qualcomm S4-pro. This should allow for Maximum battery life without sacrificing performance. - Paul Reioux
TCP Congestion Control:
The choices in this section, address how the operating system kernel manages flows of information in and out of the kernel, which is at some level the "switchboard operator" of your handset. More info here.
Better to leave this options as is. Cubic or Westwood as the default of your kernel.
Dynamic FSync - NEW:
fsync is a system call in Unix/Linux. "man fsync" says:
fsync() transfers ("flushes") all modified in-core data of (i.e., modified buffer cache pages for) the file referred to by the file descriptor fd to the disk device (or other permanent storage device) so that all changed information can be retrieved even after the system crashed or was rebooted. This includes writing through or flushing a disk cache if present. The call blocks until the device reports that the transfer has completed. It also flushes metadata information associated with the file (see stat(2)).
Click to expand...
Click to collapse
So it's something embedded in programs after a related set of write operations to ensure that all data has been written to the storage device. The bolded part is what makes it interesting for some to disable it - "The call blocks" means the calling program waits until it's finished, and this may create lag. The downside is that if the system crashes, the data on the storage devices may be inconsistent, and you may lose data. (From here).
Dynamic FSync, makes it possible for fsync operation to be asynchronous when the screen is on, and synchronous when the screen is off. And what does asynchronous mean? Means OS issues fsync call, but not necessarily immediately at commit time for each transaction. It delays the FSync call for a certain amount of time. In case of a crash, the transactions not yet sync'ed in the last delay time before the crash may be rolled back, but the state of the data is always consistent. (From here).
zRAM:
In order to explain zRAM more precisely first we need other terms defined clearly:
Swap can be compared with the swap file on Windows. If the memory (RAM) is almost complete, the data which is not used actively (ex. background applications) will be stored on hard drive so as to re-evacuate RAM free. If required, this data is then read back from there easily. This will preserve performance with no lose at multitasking (the main reason we use swap).
In zRAM unnecessary storage resources are compressed and then moved to a reserved area in the fixed RAM (zRAM). So in other words, zRAM is a kind of swap in memory. As the data is compressed not much memory needs to be preserved as zRAM. However, the CPU has to work more because compressed data has to be unpacked again when it is needed). The advantage clearly lies in the speed. Since the swap partition in RAM is much faster than this is a swap partition on a hard drive.
In itself a great thing. But Android does not have a swap partition, and therefore brings Android ZRAM under no performance gain as would be the case with a normal PC. (From here with some editing.)
Click to expand...
Click to collapse
What we need to know essentially lies here:
zRAM off = Low use data will be stored the way they are in the memory. This will cause no extra load on CPU, yet need more RAM.
zRAM on = Low use data will be stored compressed in the memory. This will cause extra load in CPU as to store or restore data, yet preserve more Free RAM.
The main use of zRAM is when you are using a heavy ROM that eats up all your RAM. This will allow multitasking to be more functional. On light ROMs, or for those who don't multitask much, this is not necessary.
Note: Also there are methods to use a part of internal memory as Swap space. This is not as fast as zRAM. But no RAM will be used at all and CPU load is less. Though I am not sure that this has been brought to our device yet. Will add more data soon on this part.
Work in progress, will add more info soon.
Reserved for OP
csec said:
•Note2: UV does not impact battery life (or it is not noticeable).
Click to expand...
Click to collapse
First of all, I would like to praise this guide for its information and depth, secondly I would like to help improve it;
emprize said:
the only different for me is temperature, for battery saving, always not noticeable for me, placebo effect most likely
Click to expand...
Click to collapse
AndreiLux said:
This is a nonsensical argument, temperature aka heat, is power. If you are getting a less heated phone, then your battery life is improving. If this wouldn't be the case then you are holding the solution to the world's energy problems in your hands.
Click to expand...
Click to collapse
just thought i would share some thoughts of a well respected and knowledgeable developer.
http://forum.xda-developers.com/showthread.php?p=36723175#post36723175
Regards
Jack
JSale said:
First of all, I would like to praise this guide for its information and depth, secondly I would like to help improve it;
just thought i would share some thoughts of a well respected and knowledgeable developer.
http://forum.xda-developers.com/showthread.php?p=36723175#post36723175
Regards
Jack
Click to expand...
Click to collapse
Wow, that was hell of an argument. Seems to be theoretically true. What I referred to in above is real life experience with my phone and according to kernel guys down at HOX forums.
However the information was really interesting. I will add it to the OP.
Thanks.
Sent from my GT-N8000 using Tapatalk HD
Recently Added to the OP:
- Eco Mode
- Dynamic FSync
zRAM added to the guide.

Categories

Resources