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

Commit ae9e68a3 authored by Adam Lesinski's avatar Adam Lesinski Committed by Android (Google) Code Review
Browse files

Merge "Have AEP GL feature depend on GLES 3.1 in badging" into lmp-dev

parents 591a824c d7a94da4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
    </feature-group>
    <feature-group android:label="@string/gamepad">
        <uses-feature android:name="android.hardware.gamepad" />
        <uses-feature android:name="android.hardware.opengles.aep" />
    </feature-group>

    <application android:label="@string/app_title">
+41 −13
Original line number Diff line number Diff line
@@ -611,6 +611,8 @@ struct ImpliedFeature {
 * Represents a <feature-group> tag in the AndroidManifest.xml
 */
struct FeatureGroup {
    FeatureGroup() : openGLESVersion(-1) {}

    /**
     * Human readable label
     */
@@ -620,6 +622,11 @@ struct FeatureGroup {
     * Explicit features defined in the group
     */
    KeyedVector<String8, bool> features;

    /**
     * OpenGL ES version required
     */
    int openGLESVersion;
};

static void addImpliedFeature(KeyedVector<String8, ImpliedFeature>* impliedFeatures,
@@ -637,6 +644,10 @@ static void printFeatureGroup(const FeatureGroup& grp,
        const KeyedVector<String8, ImpliedFeature>* impliedFeatures = NULL) {
    printf("feature-group: label='%s'\n", grp.label.string());

    if (grp.openGLESVersion > 0) {
        printf("  uses-gl-es: '0x%x'\n", grp.openGLESVersion);
    }

    const size_t numFeatures = grp.features.size();
    for (size_t i = 0; i < numFeatures; i++) {
        if (!grp.features[i]) {
@@ -688,6 +699,11 @@ static void addParentFeatures(FeatureGroup* grp, const String8& name) {
    } else if (name == "android.hardware.touchscreen.multitouch.distinct") {
        grp->features.add(String8("android.hardware.touchscreen.multitouch"), true);
        grp->features.add(String8("android.hardware.touchscreen"), true);
    } else if (name == "android.hardware.opengles.aep") {
        const int openGLESVersion31 = 0x00030001;
        if (openGLESVersion31 > grp->openGLESVersion) {
            grp->openGLESVersion = openGLESVersion31;
        }
    }
}

@@ -1316,14 +1332,16 @@ int doDump(Bundle* bundle)
                            int vers = getIntegerAttribute(tree,
                                    GL_ES_VERSION_ATTR, &error);
                            if (error == "") {
                                printf("uses-gl-es:'0x%x'\n", vers);
                                if (vers > commonFeatures.openGLESVersion) {
                                    commonFeatures.openGLESVersion = vers;
                                }
                            }
                        }
                    } else if (tag == "uses-permission") {
                        String8 name = getAttribute(tree, NAME_ATTR, &error);
                        if (name != "" && error == "") {
                            if (name == "android.permission.CAMERA") {
                                addImpliedFeature(&impliedFeatures, "android.hardware.feature",
                                addImpliedFeature(&impliedFeatures, "android.hardware.camera",
                                        String8::format("requested %s permission", name.string())
                                        .string());
                            } else if (name == "android.permission.ACCESS_FINE_LOCATION") {
@@ -1639,19 +1657,24 @@ int doDump(Bundle* bundle)
                            }
                        }
                    } else if (withinFeatureGroup && tag == "uses-feature") {
                        String8 name = getResolvedAttribute(&res, tree, NAME_ATTR, &error);
                        if (error != "") {
                            fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
                                    error.string());
                            goto bail;
                        }
                        FeatureGroup& top = featureGroups.editTop();

                        String8 name = getResolvedAttribute(&res, tree, NAME_ATTR, &error);
                        if (name != "" && error == "") {
                            int required = getIntegerAttribute(tree, REQUIRED_ATTR, NULL, 1);
                        FeatureGroup& top = featureGroups.editTop();
                            top.features.add(name, required);
                            if (required) {
                                addParentFeatures(&top, name);
                            }

                        } else {
                            int vers = getIntegerAttribute(tree, GL_ES_VERSION_ATTR, &error);
                            if (error == "") {
                                if (vers > top.openGLESVersion) {
                                    top.openGLESVersion = vers;
                                }
                            }
                        }
                    }
                } else if (depth == 4) {
                    if (tag == "intent-filter") {
@@ -1839,12 +1862,17 @@ int doDump(Bundle* bundle)
                for (size_t i = 0; i < numFeatureGroups; i++) {
                    FeatureGroup& grp = featureGroups.editItemAt(i);

                    if (commonFeatures.openGLESVersion > grp.openGLESVersion) {
                        grp.openGLESVersion = commonFeatures.openGLESVersion;
                    }

                    // Merge the features defined in the top level (not inside a <feature-group>)
                    // with this feature group.
                    const size_t numCommonFeatures = commonFeatures.features.size();
                    for (size_t j = 0; j < numCommonFeatures; j++) {
                        if (grp.features.indexOfKey(commonFeatures.features.keyAt(j)) < 0) {
                            grp.features.add(commonFeatures.features.keyAt(j), commonFeatures.features[j]);
                            grp.features.add(commonFeatures.features.keyAt(j),
                                    commonFeatures.features[j]);
                        }
                    }