~andreas-pokorny/mir/device-handle-and-settings

« back to all changes in this revision

Viewing changes to src/platforms/android/client/egl_native_surface_interpreter.cpp

  • Committer: Daniel van Vugt
  • Author(s): Kevin DuBois
  • Date: 2015-09-03 08:20:30 UTC
  • mfrom: (2899.2.3 consumer-usage-bit)
  • Revision ID: daniel.van.vugt@canonical.com-20150903082030-r3j6rahgxmwj5oua
android: support the NATIVE_WINDOW_CONSUMER_USAGE_BITS query. We recently
encountered a device that made use of this query.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
#include "mir/frontend/client_constants.h"
22
22
#include "mir/client_buffer.h"
23
23
#include <system/window.h>
 
24
#include <hardware/gralloc.h>
24
25
#include <stdexcept>
25
26
 
26
27
namespace mcla=mir::client::android;
29
30
mcla::EGLNativeSurfaceInterpreter::EGLNativeSurfaceInterpreter(EGLNativeSurface& surface)
30
31
 :  surface(surface),
31
32
    driver_pixel_format(-1),
32
 
    sync_ops(std::make_shared<mga::RealSyncFileOps>())
33
 
 
 
33
    sync_ops(std::make_shared<mga::RealSyncFileOps>()),
 
34
    hardware_bits( GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_HW_RENDER ),
 
35
    software_bits(
 
36
        GRALLOC_USAGE_SW_WRITE_OFTEN | GRALLOC_USAGE_SW_READ_OFTEN |
 
37
        GRALLOC_USAGE_HW_COMPOSER | GRALLOC_USAGE_HW_TEXTURE )
34
38
{
35
39
}
36
40
 
76
80
            return 2;
77
81
        case NATIVE_WINDOW_CONCRETE_TYPE:
78
82
            return NATIVE_WINDOW_SURFACE;
 
83
        case NATIVE_WINDOW_CONSUMER_USAGE_BITS:
 
84
            if (surface.get_parameters().buffer_usage ==  mir_buffer_usage_hardware)
 
85
                return hardware_bits;
 
86
            else
 
87
                return software_bits;
79
88
        default:
80
89
            throw std::runtime_error("driver requested unsupported query");
81
90
    }