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

Commit b685c542 authored by Jesse Hall's avatar Jesse Hall Committed by Jamie Gennis
Browse files

Changes to support multi-display HWC

Change-Id: I07efff54f2980dcb013935747b03e099b8f1181b
parent 14bd369e
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -344,9 +344,9 @@ main(int argc, char *argv[])
    hwcTestFillColorHBlend(equivFrame.get(), refFormat->format,
                           startRefColor, endRefColor);

    hwc_layer_list_1_t *list;
    size_t size = sizeof(hwc_layer_list_1_t) + numFrames * sizeof(hwc_layer_1_t);
    if ((list = (hwc_layer_list_1_t *) calloc(1, size)) == NULL) {
    hwc_display_contents_1_t *list;
    size_t size = sizeof(hwc_display_contents_1_t) + numFrames * sizeof(hwc_layer_1_t);
    if ((list = (hwc_display_contents_1_t *) calloc(1, size)) == NULL) {
        testPrintE("Allocate list failed");
        exit(11);
    }
@@ -383,7 +383,7 @@ main(int argc, char *argv[])

    // Perform prepare operation
    if (verbose) { testPrintI("Prepare:"); hwcTestDisplayList(list); }
    hwcDevice->prepare(hwcDevice, list);
    hwcDevice->prepare(hwcDevice, 1, &list);
    if (verbose) {
        testPrintI("Post Prepare:");
        hwcTestDisplayListPrepareModifiable(list);
@@ -393,7 +393,9 @@ main(int argc, char *argv[])
    list->flags &= ~HWC_GEOMETRY_CHANGED;

    if (verbose) {hwcTestDisplayListHandles(list); }
    hwcDevice->set(hwcDevice, dpy, surface, list);
    list->dpy = dpy;
    list->sur = surface;
    hwcDevice->set(hwcDevice, 1, &list);

    testDelay(endDelay);

+2 −2
Original line number Diff line number Diff line
@@ -1397,7 +1397,7 @@ void Rational::double2Rational(double f, Range nRange, Range dRange,
// Given a list of rectangles, determine how many HWC will commit to render
uint32_t numOverlays(list<Rectangle>& rectList)
{
    hwc_layer_list_1_t *hwcList;
    hwc_display_contents_1_t *hwcList;
    list<sp<GraphicBuffer> > buffers;

    hwcList = hwcTestCreateLayerList(rectList.size());
@@ -1430,7 +1430,7 @@ uint32_t numOverlays(list<Rectangle>& rectList)

    // Perform prepare operation
    if (verbose) { testPrintI("Prepare:"); hwcTestDisplayList(hwcList); }
    hwcDevice->prepare(hwcDevice, hwcList);
    hwcDevice->prepare(hwcDevice, 1, &hwcList);
    if (verbose) {
        testPrintI("Post Prepare:");
        hwcTestDisplayListPrepareModifiable(hwcList);
+5 −3
Original line number Diff line number Diff line
@@ -307,7 +307,7 @@ main(int argc, char *argv[])
    }

    // Create list of frames
    hwc_layer_list_1_t *list;
    hwc_display_contents_1_t *list;
    list = hwcTestCreateLayerList(rectangle.size());
    if (list == NULL) {
        testPrintE("hwcTestCreateLayerList failed");
@@ -329,7 +329,7 @@ main(int argc, char *argv[])

    // Perform prepare operation
    if (verbose) { testPrintI("Prepare:"); hwcTestDisplayList(list); }
    hwcDevice->prepare(hwcDevice, list);
    hwcDevice->prepare(hwcDevice, 1, &list);
    if (verbose) {
        testPrintI("Post Prepare:");
        hwcTestDisplayListPrepareModifiable(list);
@@ -341,7 +341,9 @@ main(int argc, char *argv[])
    // Perform the set operation(s)
    if (verbose) {testPrintI("Set:"); }
    if (verbose) { hwcTestDisplayListHandles(list); }
    hwcDevice->set(hwcDevice, dpy, surface, list);
    list->dpy = dpy;
    list->sur = surface;
    hwcDevice->set(hwcDevice, 1, &list);

    testDelay(endDelay);

+5 −3
Original line number Diff line number Diff line
@@ -409,7 +409,7 @@ main(int argc, char *argv[])
        // generated for this pass.
        srand48(pass);

        hwc_layer_list_1_t *list;
        hwc_display_contents_1_t *list;
        list = hwcTestCreateLayerList(testRandMod(frames.size()) + 1);
        if (list == NULL) {
            testPrintE("hwcTestCreateLayerList failed");
@@ -478,7 +478,7 @@ main(int argc, char *argv[])

        // Perform prepare operation
        if (verbose) { testPrintI("Prepare:"); hwcTestDisplayList(list); }
        hwcDevice->prepare(hwcDevice, list);
        hwcDevice->prepare(hwcDevice, 1, &list);
        if (verbose) {
            testPrintI("Post Prepare:");
            hwcTestDisplayListPrepareModifiable(list);
@@ -491,7 +491,9 @@ main(int argc, char *argv[])
        if (verbose) {testPrintI("Set:"); }
        for (unsigned int n1 = 0; n1 < numSet; n1++) {
            if (verbose) { hwcTestDisplayListHandles(list); }
            hwcDevice->set(hwcDevice, dpy, surface, list);
            list->dpy = dpy;
            list->sur = surface;
            hwcDevice->set(hwcDevice, 1, &list);

            // Prandomly select a new set of handles
            for (unsigned int n1 = 0; n1 < list->numHwLayers; n1++) {
+8 −8
Original line number Diff line number Diff line
@@ -399,12 +399,12 @@ const char *hwcTestGraphicFormat2str(uint32_t format)
 * Dynamically creates layer list with numLayers worth
 * of hwLayers entries.
 */
hwc_layer_list_1_t *hwcTestCreateLayerList(size_t numLayers)
hwc_display_contents_1_t *hwcTestCreateLayerList(size_t numLayers)
{
    hwc_layer_list_1_t *list;
    hwc_display_contents_1_t *list;

    size_t size = sizeof(hwc_layer_list_1_t) + numLayers * sizeof(hwc_layer_1_t);
    if ((list = (hwc_layer_list_1_t *) calloc(1, size)) == NULL) {
    size_t size = sizeof(hwc_display_contents_1_t) + numLayers * sizeof(hwc_layer_1_t);
    if ((list = (hwc_display_contents_1_t *) calloc(1, size)) == NULL) {
        return NULL;
    }
    list->flags = HWC_GEOMETRY_CHANGED;
@@ -417,13 +417,13 @@ hwc_layer_list_1_t *hwcTestCreateLayerList(size_t numLayers)
 * hwcTestFreeLayerList
 * Frees memory previous allocated via hwcTestCreateLayerList().
 */
void hwcTestFreeLayerList(hwc_layer_list_1_t *list)
void hwcTestFreeLayerList(hwc_display_contents_1_t *list)
{
    free(list);
}

// Display the settings of the layer list pointed to by list
void hwcTestDisplayList(hwc_layer_list_1_t *list)
void hwcTestDisplayList(hwc_display_contents_1_t *list)
{
    testPrintI("  flags: %#x%s", list->flags,
               (list->flags & HWC_GEOMETRY_CHANGED) ? " GEOMETRY_CHANGED" : "");
@@ -494,7 +494,7 @@ void hwcTestDisplayList(hwc_layer_list_1_t *list)
 * Displays the portions of a list that are meant to be modified by
 * a prepare call.
 */
void hwcTestDisplayListPrepareModifiable(hwc_layer_list_1_t *list)
void hwcTestDisplayListPrepareModifiable(hwc_display_contents_1_t *list)
{
    uint32_t numOverlays = 0;
    for (unsigned int layer = 0; layer < list->numHwLayers; layer++) {
@@ -522,7 +522,7 @@ void hwcTestDisplayListPrepareModifiable(hwc_layer_list_1_t *list)
 *
 * Displays the handles of all the graphic buffers in the list.
 */
void hwcTestDisplayListHandles(hwc_layer_list_1_t *list)
void hwcTestDisplayListHandles(hwc_display_contents_1_t *list)
{
    const unsigned int maxLayersPerLine = 6;

Loading