[Mesa-dev] [PATCH 0/7] EGL_ANDROID_blob_cache
Nicolai Hähnle
nhaehnle at gmail.com
Thu Jan 18 15:49:22 UTC 2018
On 17.01.2018 17:10, Tapani Pälli wrote:
>
>
> On 17.01.2018 13:34, Nicolai Hähnle wrote:
>> On 15.01.2018 13:31, Tapani Pälli wrote:
>>> Hello;
>>>
>>> Here's a refactored series of EGL_ANDROID_blob_cache. Now cache
>>> functions are stored in disk_cache struct and the functionality
>>> called within existing disk_cache put/get code. Problems/errors
>>> that existed with earlier series are gone.
>>>
>>> On Android cache index file is created to MESA_GLSL_CACHE_DIR
>>> and blobs are generated under '/data/user_de/0' in application
>>> specific paths:
>>
>> Can't we let the "cache index" be managed by the ANDROID_blob_cache as
>> well? That seems to me more in the spirit of what that extension is
>> about, and would avoid polluting stuff like /sdcard.
>>
>> The cache index file is used for two purposes:
>>
>> - Keeping track of the size of the cache. This use is obsoleted
>> enterely by ANDROID_blob_cache.
>>
>> - Keeping track of keys where only their presence is relevant and no
>> data is associated. These could easily be treated as empty (0 byte
>> sized) blobs.
>
> I guess it could be possible, for every app we would create index when
> disk_cache gets created. I guess only issue could be that Android might
> go and remove the index from cache when it decides to resize it and then
> we would loose it even though there would be items in cache. I can try
> how this would work.
Entries can be kicked out of the on-disk index (which is really a bit of
a misnomer) as well if there's a hash collision.
I believe this functionality is only used as a marker to indicate that
the GLSL compile step can be skipped. So losing an entry in there
shouldn't cause any damage.
Cheers,
Nicolai
>
>
>> Cheers,
>> Nicolai
>>
>>
>>
>>>
>>> androidia_64:/ # find /data/user_de/0/ -name *shader*
>>> /data/user_de/0/com.android.settings/code_cache/com.android.opengl.shaders_cache
>>>
>>> /data/user_de/0/com.android.gallery3d/code_cache/com.android.opengl.shaders_cache
>>>
>>> /data/user_de/0/com.android.systemui/code_cache/com.android.opengl.shaders_cache
>>>
>>> /data/user_de/0/com.rovio.angrybirdsspace.ads/code_cache/com.android.opengl.shaders_cache
>>>
>>>
>>> (this part is managed by Android but may be interesting to know).
>>>
>>> Also SurfaceFlinger manages its own cache as seen in the log output:
>>> 01-15 07:40:26.329 2129 2129 D SurfaceFlinger: shader cache
>>> generated - 24 shaders in 57.687504 ms
>>>
>>> I'm not sure if /sdcard is sane default but I've tried everything
>>> else (/cache, /data/cache) and failed because of permission errors.
>>>
>>> Thanks;
>>>
>>> Tapani Pälli (7):
>>> dri: add interface for EGL_ANDROID_blob_cache extension
>>> egl: add support for EGL_ANDROID_blob_cache
>>> disk cache: add callback functionality
>>> disk cache: support setting MESA_GLSL_CACHE_DIR at compile time
>>> i965: add __DRI2_BLOB support and set cache functions
>>> android: ignore MESA_GLSL_CACHE_DISABLE setting
>>> android: set '/sdcard/' as MESA_GLSL_CACHE_DIR by default
>>>
>>> Android.common.mk | 1 +
>>> include/GL/internal/dri_interface.h | 26 +++++++++++++-
>>> src/egl/drivers/dri2/egl_dri2.c | 43
>>> ++++++++++++++++++++++++
>>> src/egl/drivers/dri2/egl_dri2.h | 4 +++
>>> src/egl/main/eglapi.c | 29 ++++++++++++++++
>>> src/egl/main/eglapi.h | 4 +++
>>> src/egl/main/egldisplay.h | 3 ++
>>> src/egl/main/eglentrypoint.h | 1 +
>>> src/mesa/drivers/dri/i965/brw_disk_cache.c | 2 ++
>>> src/mesa/drivers/dri/i965/intel_screen.c | 21 ++++++++++++
>>> src/util/disk_cache.c | 54
>>> +++++++++++++++++++++++++++++-
>>> src/util/disk_cache.h | 19 +++++++++++
>>> 12 files changed, 205 insertions(+), 2 deletions(-)
>>>
>>
>>
--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
More information about the mesa-dev
mailing list