summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarissa Wall <marissaw@google.com>2016-09-07 12:15:14 -0700
committerMarissa Wall <marissaw@google.com>2017-03-02 13:06:21 -0800
commitf93cdd37b81b240144b49171ee6cd27d56e01b24 (patch)
tree04a2b983a0729e42035cc70abc97a61d0e373e6f
parent578192bd3498d8c49ead61428275f5b020906bfb (diff)
downloadflounder-f93cdd37b81b240144b49171ee6cd27d56e01b24.tar.gz
hwc2: virtual displays
Adds explict non-support for virtual displays. Test: Add "TARGET_USES_HWC2 := true" to BoardConfig.mk. Recompile. Run testcases: https://android-review.googlesource.com/#/q/project: platform/frameworks/native+branch:master+topic:test-hwc2 Change-Id: I60c83a790b09f370f239331efe1893c7c1b58418
-rw-r--r--hwc2/hwc2.cpp30
-rw-r--r--hwc2/hwc2.h9
-rw-r--r--hwc2/hwc2_dev.cpp29
3 files changed, 54 insertions, 14 deletions
diff --git a/hwc2/hwc2.cpp b/hwc2/hwc2.cpp
index 1aadf19..838cf78 100644
--- a/hwc2/hwc2.cpp
+++ b/hwc2/hwc2.cpp
@@ -41,18 +41,19 @@ hw_module_t HAL_MODULE_INFO_SYM = {
};
-hwc2_error_t create_virtual_display(hwc2_device_t* /*device*/,
- uint32_t /*width*/, uint32_t /*height*/,
- android_pixel_format_t* /*format*/,
- hwc2_display_t* /*out_display*/)
+hwc2_error_t create_virtual_display(hwc2_device_t *device, uint32_t width,
+ uint32_t height, android_pixel_format_t *format,
+ hwc2_display_t *out_display)
{
- return HWC2_ERROR_NONE;
+ hwc2_dev *dev = reinterpret_cast<hwc2_context *>(device)->hwc2_dev;
+ return dev->create_virtual_display(width, height, format, out_display);
}
-hwc2_error_t destroy_virtual_display(hwc2_device_t* /*device*/,
- hwc2_display_t /*display*/)
+hwc2_error_t destroy_virtual_display(hwc2_device_t *device,
+ hwc2_display_t display)
{
- return HWC2_ERROR_NONE;
+ hwc2_dev *dev = reinterpret_cast<hwc2_context *>(device)->hwc2_dev;
+ return dev->destroy_virtual_display(display);
}
void dump(hwc2_device_t* /*device*/, uint32_t* /*out_size*/,
@@ -61,9 +62,10 @@ void dump(hwc2_device_t* /*device*/, uint32_t* /*out_size*/,
return;
}
-uint32_t get_max_virtual_display_count(hwc2_device_t* /*device*/)
+uint32_t get_max_virtual_display_count(hwc2_device_t *device)
{
- return HWC2_ERROR_NONE;
+ hwc2_dev *dev = reinterpret_cast<hwc2_context *>(device)->hwc2_dev;
+ return dev->get_max_virtual_display_count();
}
hwc2_error_t register_callback(hwc2_device_t *device,
@@ -229,11 +231,11 @@ hwc2_error_t set_color_transform(hwc2_device_t *device, hwc2_display_t display,
return dev->set_color_transform(display, matrix, hint);
}
-hwc2_error_t set_output_buffer(hwc2_device_t* /*device*/,
- hwc2_display_t /*display*/, buffer_handle_t /*buffer*/,
- int32_t /*release_fence*/)
+hwc2_error_t set_output_buffer(hwc2_device_t *device, hwc2_display_t display,
+ buffer_handle_t buffer, int32_t release_fence)
{
- return HWC2_ERROR_NONE;
+ hwc2_dev *dev = reinterpret_cast<hwc2_context *>(device)->hwc2_dev;
+ return dev->set_output_buffer(display, buffer, release_fence);
}
hwc2_error_t set_power_mode(hwc2_device_t *device, hwc2_display_t display,
diff --git a/hwc2/hwc2.h b/hwc2/hwc2.h
index 158df38..af5902a 100644
--- a/hwc2/hwc2.h
+++ b/hwc2/hwc2.h
@@ -590,6 +590,15 @@ public:
hwc2_error_t get_display_type(hwc2_display_t dpy_id,
hwc2_display_type_t *out_type) const;
+ /* Virtual display functions */
+ uint32_t get_max_virtual_display_count() const;
+ hwc2_error_t create_virtual_display(uint32_t width, uint32_t height,
+ android_pixel_format_t *format,
+ hwc2_display_t *out_display);
+ hwc2_error_t destroy_virtual_display(hwc2_display_t dpy_id);
+ hwc2_error_t set_output_buffer(hwc2_display_t dpy_id,
+ buffer_handle_t buffer, int32_t release_fence);
+
/* Power modes */
hwc2_error_t set_power_mode(hwc2_display_t dpy_id, hwc2_power_mode_t mode);
hwc2_error_t get_doze_support(hwc2_display_t dpy_id, int32_t *out_support)
diff --git a/hwc2/hwc2_dev.cpp b/hwc2/hwc2_dev.cpp
index c568d3e..60af4cf 100644
--- a/hwc2/hwc2_dev.cpp
+++ b/hwc2/hwc2_dev.cpp
@@ -86,6 +86,35 @@ hwc2_error_t hwc2_dev::get_display_type(hwc2_display_t dpy_id,
return HWC2_ERROR_NONE;
}
+uint32_t hwc2_dev::get_max_virtual_display_count() const
+{
+ return 0;
+}
+
+hwc2_error_t hwc2_dev::create_virtual_display(uint32_t /*width*/,
+ uint32_t /*height*/, android_pixel_format_t* /*format*/,
+ hwc2_display_t* /*out_display*/)
+{
+ return HWC2_ERROR_NO_RESOURCES;
+}
+
+hwc2_error_t hwc2_dev::destroy_virtual_display(hwc2_display_t dpy_id)
+{
+ if (displays.find(dpy_id) != displays.end())
+ return HWC2_ERROR_BAD_PARAMETER;
+ else
+ return HWC2_ERROR_BAD_DISPLAY;
+}
+
+hwc2_error_t hwc2_dev::set_output_buffer(hwc2_display_t dpy_id,
+ buffer_handle_t /*buffer*/, int32_t /*release_fence*/)
+{
+ if (displays.find(dpy_id) != displays.end())
+ return HWC2_ERROR_UNSUPPORTED;
+ else
+ return HWC2_ERROR_BAD_DISPLAY;
+}
+
hwc2_error_t hwc2_dev::set_power_mode(hwc2_display_t dpy_id,
hwc2_power_mode_t mode)
{