Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a9f223d authored by Lingfeng Yang's avatar Lingfeng Yang
Browse files

Don't use shader disk cache on emulator

bug: 71900691

Emulator user might switch renderers, migrate a snapshot to a different
machine with a different shader binary format, etc.

Plus, program binaries don't seem to work so well on some desktop GPUs.

Change-Id: I0c6239acbd556097494aa903d6603c963d3141cb
parent 1a68be0f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -61,6 +61,8 @@ bool Properties::disableVsync = false;
bool Properties::skpCaptureEnabled = false;
bool Properties::enableRTAnimations = true;

bool Properties::runningInEmulator = false;

static int property_get_int(const char* key, int defaultValue) {
    char buf[PROPERTY_VALUE_MAX] = {
            '\0',
@@ -135,6 +137,8 @@ bool Properties::load() {
    skpCaptureEnabled = property_get_bool("ro.debuggable", false) &&
                        property_get_bool(PROPERTY_CAPTURE_SKP_ENABLED, false);

    runningInEmulator = property_get_bool(PROPERTY_QEMU_KERNEL, false);

    return (prevDebugLayersUpdates != debugLayersUpdates) || (prevDebugOverdraw != debugOverdraw) ||
           (prevDebugStencilClip != debugStencilClip);
}
+7 −0
Original line number Diff line number Diff line
@@ -180,6 +180,11 @@ enum DebugLevel {
 */
#define PROPERTY_CAPTURE_SKP_FILENAME "debug.hwui.skp_filename"

/**
 * Property for whether this is running in the emulator.
 */
#define PROPERTY_QEMU_KERNEL "ro.kernel.qemu"

///////////////////////////////////////////////////////////////////////////////
// Misc
///////////////////////////////////////////////////////////////////////////////
@@ -261,6 +266,8 @@ public:
    // Used for testing only to change the render pipeline.
    static void overrideRenderPipelineType(RenderPipelineType);

    static bool runningInEmulator;

private:
    static ProfileType sProfileType;
    static bool sDisableProfileBars;
+6 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <log/log.h>
#include <thread>
#include "FileBlobCache.h"
#include "Properties.h"
#include "utils/TraceUtils.h"

namespace android {
@@ -43,7 +44,11 @@ ShaderCache& ShaderCache::get() {
void ShaderCache::initShaderDiskCache() {
    ATRACE_NAME("initShaderDiskCache");
    std::lock_guard<std::mutex> lock(mMutex);
    if (mFilename.length() > 0) {

    // Emulators can switch between different renders either as part of config
    // or snapshot migration. Also, program binaries may not work well on some
    // desktop / laptop GPUs. Thus, disable the shader disk cache for emulator builds.
    if (!Properties::runningInEmulator && mFilename.length() > 0) {
        mBlobCache.reset(new FileBlobCache(maxKeySize, maxValueSize, maxTotalSize, mFilename));
        mInitialized = true;
    }