]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'drm/drm-next'
authorStephen Rothwell <sfr@canb.auug.org.au>
Wed, 21 Dec 2011 03:16:22 +0000 (14:16 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 21 Dec 2011 03:16:22 +0000 (14:16 +1100)
Conflicts:
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c

1  2 
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c

index 8aa1dbb45c67efad383e6f938383efeb11589210,1748a7142aca76811ab6fff8b4dbcf921496737b..0c7658ba5497c0972839ff9f4dd9ea4e5dccd3eb
@@@ -1123,29 -1041,46 +1131,29 @@@ static struct drm_framebuffer *vmw_kms_
                return ERR_PTR(-ENOENT);
        }
  
 -      /**
 -       * End conditioned code.
 -       */
 -
 -      ret = vmw_user_surface_lookup_handle(dev_priv, tfile,
 -                                           mode_cmd.handle, &surface);
 +      /* returns either a dmabuf or surface */
 +      ret = vmw_user_lookup_handle(dev_priv, tfile,
-                                    mode_cmd->handle,
++                                   mode_cmd.handle,
 +                                   &surface, &bo);
        if (ret)
 -              goto try_dmabuf;
 -
 -      if (!surface->scanout)
 -              goto err_not_scanout;
 -
 -      ret = vmw_kms_new_framebuffer_surface(dev_priv, file_priv, surface,
 -                                            &vfb, &mode_cmd);
 -
 -      /* vmw_user_surface_lookup takes one ref so does new_fb */
 -      vmw_surface_unreference(&surface);
 -
 -      if (ret) {
 -              DRM_ERROR("failed to create vmw_framebuffer: %i\n", ret);
 -              ttm_base_object_unref(&user_obj);
 -              return ERR_PTR(ret);
 -      } else
 -              vfb->user_obj = user_obj;
 -      return &vfb->base;
 -
 -try_dmabuf:
 -      DRM_INFO("%s: trying buffer\n", __func__);
 -
 -      ret = vmw_user_dmabuf_lookup(tfile, mode_cmd.handle, &bo);
 -      if (ret) {
 -              DRM_ERROR("failed to find buffer: %i\n", ret);
 -              return ERR_PTR(-ENOENT);
 -      }
 -
 -      ret = vmw_kms_new_framebuffer_dmabuf(dev_priv, bo, &vfb,
 -                                           &mode_cmd);
 -
 -      /* vmw_user_dmabuf_lookup takes one ref so does new_fb */
 -      vmw_dmabuf_unreference(&bo);
 +              goto err_out;
 +
 +      /* Create the new framebuffer depending one what we got back */
 +      if (bo)
 +              ret = vmw_kms_new_framebuffer_dmabuf(dev_priv, bo, &vfb,
-                                                    mode_cmd);
++                                                   &mode_cmd);
 +      else if (surface)
 +              ret = vmw_kms_new_framebuffer_surface(dev_priv, file_priv,
-                                                     surface, &vfb, mode_cmd);
++                                                    surface, &vfb, &mode_cmd);
 +      else
 +              BUG();
 +
 +err_out:
 +      /* vmw_user_lookup_handle takes one ref so does new_fb */
 +      if (bo)
 +              vmw_dmabuf_unreference(&bo);
 +      if (surface)
 +              vmw_surface_unreference(&surface);
  
        if (ret) {
                DRM_ERROR("failed to create vmw_framebuffer: %i\n", ret);
Simple merge
Simple merge