Facebook
From sumo, 2 Years ago, written in Diff-output.
This paste is a reply to Untitled from sumo - go back
Embed
Viewing differences between Untitled and Re: Untitled
diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c
index 2988d5b49eb6..2b516e60c07f 100644
--- a/drivers/gpu/drm/vkms/vkms_composer.c
+++ b/drivers/gpu/drm/vkms/vkms_composer.c
@@ -373,8 +373,22 @@ int vkms_set_crc_source(struct drm_crtc *crtc, const char *src_name)
         int ret = 0;
 
         ret = vkms_crc_parse_source(src_name, &enabled);
-
+        printk(KERN_CRIT "enabled after parsing is %d\n", enabled);
         vkms_set_composer(out, enabled);
 
         return ret;
 }
+
+
+int vkms_set_crc_vhw_source(struct drm_crtc *crtc, const char *src_name)
+{
+        struct vkms_output *out = drm_crtc_to_vkms_output(crtc);
+        bool enabled = false;
+        int ret = 0;
+
+        ret = vkms_crc_parse_source(src_name, &enabled);
+
+        //vkms_set_composer(out, enabled);
+
+        return ret;
+}
\ No newline at end of file
diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c
index 8477b33c4d09..957f560612f1 100644
--- a/drivers/gpu/drm/vkms/vkms_crtc.c
+++ b/drivers/gpu/drm/vkms/vkms_crtc.c
@@ -174,6 +174,21 @@ static const struct drm_crtc_funcs vkms_crtc_funcs = {
         .verify_crc_source        = vkms_verify_crc_source,
 };
 
+static const struct drm_crtc_funcs vkms_crtc_vhw_funcs = {
+        .set_config             = drm_atomic_helper_set_config,
+        .destroy                = drm_crtc_cleanup,
+        .page_flip              = drm_atomic_helper_page_flip,
+        .reset                  = vkms_atomic_crtc_reset,
+        .atomic_duplicate_state = vkms_atomic_crtc_duplicate_state,
+        .atomic_destroy_state   = vkms_atomic_crtc_destroy_state,
+        //.enable_vblank                = vkms_enable_vblank,
+        //.disable_vblank                = vkms_disable_vblank,
+        //.get_vblank_timestamp        = vkms_get_vblank_timestamp,
+        .get_crc_sources        = vkms_get_crc_sources,
+        .set_crc_source                = vkms_set_crc_vhw_source,
+        .verify_crc_source        = vkms_verify_crc_source,
+};
+
 static int vkms_crtc_atomic_check(struct drm_crtc *crtc,
                                   struct drm_atomic_state *state)
 {
@@ -302,8 +317,15 @@ int vkms_crtc_init(struct drm_device *dev, struct drm_crtc *crtc,
         struct vkms_device *vkmsdev = drm_device_to_vkms_device(dev);
         int ret;
 
-        ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor,
+        if (vkmsdev->config->virtual_hw)
+                ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor,
+                                        &vkms_crtc_vhw_funcs, NULL);
+        else
+                ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor,
                                         &vkms_crtc_funcs, NULL);
+
+        //ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor,
+        //                                &vkms_crtc_funcs, NULL);
         if (ret) {
                 DRM_ERROR("Failed to init CRTC\n");
                 return ret;
diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_drv.h
index 770594e07f0e..1959e78746c5 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.h
+++ b/drivers/gpu/drm/vkms/vkms_drv.h
@@ -129,6 +129,7 @@ struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev,
 const char *const *vkms_get_crc_sources(struct drm_crtc *crtc,
                                         size_t *count);
 int vkms_set_crc_source(struct drm_crtc *crtc, const char *src_name);
+int vkms_set_crc_vhw_source(struct drm_crtc *crtc, const char *src_name);
 int vkms_verify_crc_source(struct drm_crtc *crtc, const char *source_name,
                            size_t *values_cnt);