<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Times New Roman","serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin:0cm;
        margin-bottom:.0001pt;
        text-indent:21.0pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:SimSun;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1769538174;
        mso-list-type:hybrid;
        mso-list-template-ids:-1541352322 779536540 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:18.0pt;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-text:"%2\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:42.0pt;
        text-indent:-21.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:63.0pt;
        text-indent:-21.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:84.0pt;
        text-indent:-21.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-text:"%5\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:105.0pt;
        text-indent:-21.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:126.0pt;
        text-indent:-21.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:147.0pt;
        text-indent:-21.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-text:"%8\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:168.0pt;
        text-indent:-21.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:189.0pt;
        text-indent:-21.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="ZH-CN" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Hi, Jasper & Jason<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">In order to understand it more, I provide such cases.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1">
<![if !supportLists]><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><span style="mso-list:Ignore">1)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">One customer uses handset which OS using wayland. When he open the handset, there is the menu screen which contain icons list. Someone
 want to see 10 icons, someone wants to see 20 icons. (one requirement, it really happens, at least when use my handset, I like to see everything in one page or more). Surface mode set is one way, output mode set is another way, apps setting is also another
 way(font size or icon size).<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1">
<![if !supportLists]><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><span style="mso-list:Ignore">2)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Continue, customer click the web page apps, you could see the web contents. He can change the font size by setting web page(see clear or
 more contents). <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">The same above, surface is one way, web setting another way, mode set for output is also a way.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1">
<![if !supportLists]><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><span style="mso-list:Ignore">3)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Ok, You can tell me, surface could do that, that is right. You change menu screen surface, but at the same time you want to customer change
 the webpage surface with same action. Why do I say that? according to the custom, someone wants to see small or big, less or more, it will do the same thing in another apps. Generally when user have some sense for one apps to change the size of icon, it has
 the same feeling on other apps. Surface just update one surface, output will update all surfaces on the output. It is one shot thing.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Surface mode set is one choice, why not provide output mode set to user? All done or part done, it is up to user. We just provide the choice.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1">
<![if !supportLists]><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><span style="mso-list:Ignore">4)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Another thinking<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">You use automotive or handset or TV, it is belong to you. There are no existence to let arbitrary mode setting. If someone really do that, that means
 your machine is attacked or hacked. Automotive, handset, TV is a private thing which should not be public to outside. It is not like server or server-like desktop. Every client should have been  strictly controlled. Even if for desktop, do you want anyone
 to access you at will?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">I don’t expect wayland will be powerful in server. But it should be a choice for embedded system or netbook or some small device which is belong
 to private thing. It is under the control by user.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1">
<![if !supportLists]><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><span style="mso-list:Ignore">5)<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Another thing, Please don’t tell me customer doesn’t know such functionality. Yes, from developer view, customer doesn’t know what mode
 setting is. But when developer develops an application which use mode setting interface, it could be called another reasonable thing. For example, magnifier or smaller, or bigger, or little, or scaler… You know what I mean. The only thing is when you using
 your TV, handset, automotive, if you have the requirement to change the view of that.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">I just show my thought for this idea. Welcome any concern about that.
</span><span lang="EN-US" style="font-size:10.5pt;font-family:Wingdings;color:black">J</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Thanks<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Regards<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:black">Quanxian Wang<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Wang, Quanxian
<br>
<b>Sent:</b> Wednesday, March 05, 2014 1:49 PM<br>
<b>To:</b> 'Jasper St. Pierre'; Jason Ekstrand<br>
<b>Cc:</b> Hardening; Matthias Clasen; wayland-devel@lists.freedesktop.org; Pekka Paalanen; Zhang, Xiong Y<br>
<b>Subject:</b> RE: [PATCH 1/6] Add weston randr protocol<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
<a href="mailto:wayland-devel-bounces@lists.freedesktop.org">wayland-devel-bounces@lists.freedesktop.org</a> [<a href="mailto:wayland-devel-bounces@lists.freedesktop.org">mailto:wayland-devel-bounces@lists.freedesktop.org</a>]
<b>On Behalf Of </b>Jasper St. Pierre<br>
<b>Sent:</b> Wednesday, March 05, 2014 12:51 PM<br>
<b>To:</b> Jason Ekstrand<br>
<b>Cc:</b> Hardening; Matthias Clasen; <a href="mailto:wayland-devel@lists.freedesktop.org">
wayland-devel@lists.freedesktop.org</a>; Pekka Paalanen; Zhang, Xiong Y; Wang, Quanxian<br>
<b>Subject:</b> Re: [PATCH 1/6] Add weston randr protocol<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">I'd also say that in the automotive case, you *don't* want arbitrary modesetting. The user of the infotainment system in your Land Rover will not want to change the display resolution from
 800x600 to 1024x768; she won't choose it from a dropdown, and it's very likely she doesn't know what such functionality is.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><i><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D">[Wang, Quanxian] For example, someone like screen to contain more icons(big resolution) and someone like big
 icons in screen(small resolution). Resolution  changed will be one way. I just say one way. In randr protocol, I don’t want arbitrary. It is under the control. If security is fine, we could make it. If you really need it at once, just make it happen as a module.
 That is fine. Someone like 1024 or some one like 1920. It is different. I just provide one method for user or developer to choose under  their requirement.</span></i></b><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">Such UIs are also fairly closely designed for various resolutions, with pixel-perfect graphics and so forth. Letting any client change the mode would be disaster, as now all the button sizes which were tested with various
 labels and font sizes and fingers are all different, and the rest of everything is chopped off!<o:p></o:p></span></p>
<p class="MsoNormal"><b><i><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D">[Wang, Quanxian] I don’t’ see xrandr is a disaster for xserver. It is a useful tool. Just like in window system, I will change the resolution
 from 1024 to 1920. One thing we need to be done is that it is must under the control. Basically we expected wayland could do that. Actually we have the same goal, let right client do right thing. But not means we should less some function. I expected wayland
 security will be powerful.</span></i></b><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span lang="EN-US">If some video player wants to go full-screen and all it has is a 800x600 surface, then let the compositor set the mode based on seeing that a full-screen surface has size 800x600, and we can natively set the mode, without
 the client ever communicating that it wants to do a mode change.<o:p></o:p></span></p>
<p class="MsoNormal"><b><i><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D">[Wang, Quanxian] Yes, surface full screen mode set could do that. But it is only for one surface. How about others surface. It is really
 different thing. Output configuration is for all things happened on the output. Surface configuration is for all things happened on the surface.</span></i></b><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><i><span lang="EN-US" style="font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D">One case, if it is pixel-perfect for graphics like you said, why monitor or screen producer provide more resolutions
 for that? Can you expect the reason? I think fix mode provided will be more cheap that more. Why producer like to do that? from my view, it is definitely the requirement of their customers.
<o:p></o:p></span></i></b></p>
<div>
<p class="MsoNormal"><span lang="EN-US">On Tue, Mar 4, 2014 at 10:56 PM, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>> wrote:<o:p></o:p></span></p>
<p><span lang="EN-US">Quanxian,<br>
I think what Jasper is getting at is the difference between a configuration interface and a client-facing interface.  Unfortunately, in X the RandR interface was used in both capacities.  Allow me to try and clerify this distinction.<o:p></o:p></span></p>
<p><span lang="EN-US">A "client-facing interface" is one that is detected and used by various clients.  The intention of most client-facing interfaces is to make them general enough for all compositors and eventually get them mainlined into the core wayland
 protocol.  If you are writing this kind of interface, you need to very specifically justify why clients need this kind of interface and not another.  In particular, most clients have no buiseness changing the screen resolution.  Some clients may cause a screen
 resolution change due to, for example, making their surface fullscreen.  However, that is a very different thing from making arbitrary resolution changes.  If you have a good reason for a client to make arbitrary RandR type changes other than dynamic configuration,
 you need to be very clear about why and we need to analize if there is a better way to do that than simply giving them access to RandR.<o:p></o:p></span></p>
<p><span lang="EN-US">When I say "configuration interface" I mean something that is intended for the express purpose of changing Weston's confguration dynamically.  This could be a command-line or graphical utility that allows the user to select a new screen
 resolution, orientation, or whatever.  If this is your intention, then you should probably use the weston_ prefix rather than the wl_ prefix and it should be considered weston-specific.  Also, if possible, clients that use this interface should be launched
 from weston to ensure that they can only be used with the user's permission.  I'm not sure how to make this work properly for a command-line client, but a graphical one could be special-cased inside weston to be allowed the interface.<o:p></o:p></span></p>
<p><span lang="EN-US">What I really don't think we need (and where I'm afraid this is headed) is a priviledged client-facing interface.  I can see very little use for general modesetting interface that all compositors support.  Output configuration GUI's aren't
 that hard to write and each compositor can have their own.  I highly doubt someone will write a particularly spectacular third-party output configuration GUI that someone will want to use with GNOME or KDE.  What about a standard command-line utility?  Frankly,
 I can't see that ending well.  The primary use for it would be by scripts and other clients completely breaking whatever security procedures we try to set up.<o:p></o:p></span></p>
<p><span lang="EN-US">So far, every use case you have given indicates that this is entirely a configuration interface.  I'm not saying that you don't have a good reason for wanting to be able to change the output configuration.  If what you're doing is something
 other than just on-the-fly weston configuration, I have a feeling that you have a more specific use in mind that would be better served by a more specific interface.<o:p></o:p></span></p>
<p><span lang="EN-US">Thanks,<br>
--Jason Ekstrand<o:p></o:p></span></p>
<div>
<div>
<p><span lang="EN-US">On Mar 4, 2014 9:22 PM, "Wang, Quanxian" <<a href="mailto:quanxian.wang@intel.com" target="_blank">quanxian.wang@intel.com</a>> wrote:<br>
><br>
>  <br>
><br>
>  <br>
><br>
> From: <a href="mailto:wayland-devel-bounces@lists.freedesktop.org" target="_blank">
wayland-devel-bounces@lists.freedesktop.org</a> [mailto:<a href="mailto:wayland-devel-bounces@lists.freedesktop.org" target="_blank">wayland-devel-bounces@lists.freedesktop.org</a>] On Behalf Of Jasper St. Pierre<br>
> Sent: Wednesday, March 05, 2014 10:53 AM<br>
> To: Wang, Quanxian<br>
> Cc: Hardening; Matthias Clasen; <a href="mailto:wayland-devel@lists.freedesktop.org" target="_blank">
wayland-devel@lists.freedesktop.org</a>; Pekka Paalanen; Jason Ekstrand; Zhang, Xiong Y<br>
><br>
> Subject: Re: [PATCH 1/6] Add weston randr protocol<br>
><br>
>  <br>
><br>
> So, before we go further on this, I need to ask three basic questions: what are the goals of this interface? Who is supposed to use this interface? Why would they use this interface?<br>
><br>
> [Wang, Quanxian]<br>
><br>
> What are the goals of this interface?<br>
><br>
> The goal of this interface is to provide dynamic mode setting for output. Make wayland desktop configuration more flexible for scale, transform or mode setting.<br>
><br>
>  <br>
><br>
> Who is supposed to use this interface?<br>
><br>
> Any customer or user want to rotate, scale or mode the output when they needed. For example, Automotive, there are 2 screens, one is left another is on back, want to rotate the screen. You can sleep, stand, and more body postures, you want to rotate the screen
 to make you comfortable. For Automotive, mobile, TV or even if desktop. Just like xrandr for xserver.<br>
><br>
> You want to get another resolution (mode), for example 1440x900, or 1920x1080. Monitor producer provide such things in order to let user use this. This interface provides such function dynamically to meet the requirement.<br>
><br>
>  <br>
><br>
> Why would they use this interface? Dynamic mode setting for output will be provided to developer.<br>
><br>
>  <br>
><br>
> Here is a general case:<br>
><br>
> In window system or linux system, you want to change the resolution of your desktop at will. For example 1440x900 to 1920x1080, do you want to kill desktop server and then configure it and then restart desktop server. You will not, you just open the display
 configuration, and set it to 1920x1080 and then save it. The resolution of desktop will be changed. If you want another, same thing.<br>
><br>
>  <br>
><br>
> Dynamic mode setting for output is found everywhere in matured window or linux desktop system. Providing this interface to embedded system, multi screen supported system will be fine.<br>
><br>
>  <br>
><br>
>  <br>
><br>
> On Tue, Mar 4, 2014 at 9:07 PM, Wang, Quanxian <<a href="mailto:quanxian.wang@intel.com" target="_blank">quanxian.wang@intel.com</a>> wrote:<br>
><br>
> Hi, All<br>
><br>
> With the first version of randr protol, I got many useful idea and comments. Thanks.<br>
><br>
> Before I send the email, I have make it happen in real world but need more deep testing.<br>
><br>
> Here are new changes and idea for that protocol based on the idea and comments, welcome your input.<br>
><br>
> 1) Unique operation issue<br>
> Given that one client has two more threads to do mode setting on the same output at the same time, how to identify what response (done event) is belong to one or another request when they want to get response?<br>
><br>
> This is a design flaw in the first version of randr protocol.<br>
><br>
> The solution is to use the wayland/weston mechanism, every request will generate a resource which be used to send done event to the owner who start it. Owner could set the listener on that and keep tuning on the response event.<br>
><br>
> For example<br>
> In client:<br>
> randr_transform = wl_randr_set_transform(randr.randr,wayland_output,argument.transform);<br>
><br>
> /* Here will will add listen callback to get the response for this unique request */<br>
> wl_randr_add_listener(randr_transform, &randr_transform_listener, &randr);<br>
><br>
> In compositor:<br>
> randr_resource = wl_resource_create(client,&wl_randr_interface,1, action);<br>
> wl_randr_send_action_done(randr_resource, 1<<WL_RANDR_ACTION_TRANSFORM, ret, action);<br>
> wl_resource_destroy(randr_resource);<br>
><br>
> 2) Security and mess up issue<br>
> Will take randr protocol implementation as a module or plugin. This will keep compositor clear and avoid messing up in compositor.c. Also it is will be fine for compositor when this could be public.<br>
> The security should be a general issue for wayland instead of for randr protocol only. Take randr protocol as a module for user to determine if they want to public randr interface for their clients. Once security mechanism is built up in wayland, randr could
 adopt the mechanism to enhance the security of randr protocol.<br>
><br>
> weston --tty=1 --modules=wrandr.so<br>
> or set it in weston.ini like that<br>
> [core]<br>
> modules=wrandr.so<br>
><br>
> 3) Group randr operations<br>
> After talking with PQ, in order to avoid glitches, group operation is needed. However, if operate on two outputs more at one time, it will bring more issues which could not control. In this randr design, will not provide group operation on multiple outputs.
 We provide atomic operation on one output, multi outputs operation logic are left to designer/developers. Group operation on one output will be designed. For example, you can set mode, scale, and transform at one time with one randr request.<br>
><br>
> 4) Configuration interface<br>
> Weston randr protocol will be taken as configuration interface for output mode setting in wayland. So the permission for that will be strictly under the control. Before security mechanism is ready, randr module will be designed for compositor as a choice.
 It is just a loadable module or plugin for special compositors. User will take the decision if start it when boot up compositor as a module.<br>
><br>
> 5) mode setting parameters control<br>
> Mode and output will be under the control. User could not randomly to set their mode. They have to select the available modes and outputs provided by compositor. Don't allow random mode setting. The mode and output information could be provided by weston-randr
 apps or wl_output interface.<br>
><br>
> 6) Disconnected outputs<br>
> When user query output information, showing connected and disconnected output as a whole will be fine for user and QA people. Sometime, QA people or user like that information. It will be helpful for them to identify how many outputs are provided by their
 machine. Which is connected and which is not connected.<br>
><br>
> 7) wl_output property event<br>
> Delete get_output_name request and event in protocol. wl_output name event will be added into wl_output protocol. This event will send the output name to user when they bind wl_output. For width and height of wl_output, I am not sure if it is should be sent
 out at the same time. My idea is it should be the same event to send name, width, height after output is changed. But currently I will not add that.<br>
><br>
> 8) adding set_scale request<br>
> Mode, scale, transform is the basic property of output, I will add them as a whole.<br>
><br>
> Thanks<br>
><br>
> Regards<br>
><br>
> Quanxian Wang<br>
><br>
><br>
> -----Original Message-----<br>
> From: Pekka Paalanen [mailto:<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>]<br>
><br>
> Sent: Thursday, February 27, 2014 5:45 PM<br>
> To: Wang, Quanxian<br>
> Cc: <a href="mailto:wayland-devel@lists.freedesktop.org" target="_blank">wayland-devel@lists.freedesktop.org</a>; Zhang, Xiong Y<br>
> Subject: Re: [PATCH 1/6] Add weston randr protocol<br>
><br>
> On Thu, 27 Feb 2014 09:15:55 +0000<br>
> "Wang, Quanxian" <<a href="mailto:quanxian.wang@intel.com" target="_blank">quanxian.wang@intel.com</a>> wrote:<br>
><br>
> ><br>
> ><br>
> > -----Original Message-----<br>
> > From: Pekka Paalanen [mailto:<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>]<br>
> > Sent: Thursday, February 27, 2014 4:36 PM<br>
> > To: Wang, Quanxian<br>
> > Cc: <a href="mailto:wayland-devel@lists.freedesktop.org" target="_blank">wayland-devel@lists.freedesktop.org</a>; Zhang, Xiong Y<br>
> > Subject: Re: [PATCH 1/6] Add weston randr protocol<br>
> ><br>
> > On Thu, 27 Feb 2014 08:06:23 +0000<br>
> > "Wang, Quanxian" <<a href="mailto:quanxian.wang@intel.com" target="_blank">quanxian.wang@intel.com</a>> wrote:<br>
> ><br>
> > ><br>
> > ><br>
> > > -----Original Message-----<br>
> > > From: Pekka Paalanen [mailto:<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>]<br>
> > > Sent: Thursday, February 27, 2014 3:28 PM<br>
> > > To: Wang, Quanxian<br>
> > > Cc: <a href="mailto:wayland-devel@lists.freedesktop.org" target="_blank">wayland-devel@lists.freedesktop.org</a>; Zhang, Xiong Y<br>
> > > Subject: Re: [PATCH 1/6] Add weston randr protocol<br>
> > ><br>
> > > On Thu, 27 Feb 2014 11:28:00 +0800<br>
> > > Quanxian Wang <<a href="mailto:quanxian.wang@intel.com" target="_blank">quanxian.wang@intel.com</a>> wrote:<br>
> > ><br>
> > > > Weston protocol wrandr will provide interface to<br>
> > > > 1) set output mode<br>
> > > > 2) set output transform<br>
> > > > 3) move output to relative position<br>
> > > > 4) provide disconnected display port information<br>
> > > ><br>
> > > > *Dynamic* mode setting is the main objective of this protocol.<br>
> > > > Remember, it is one shot operation. For example, if setting the<br>
> > > > mode, just call one request wl_randr_set_mode without any other<br>
> > > > operation.<br>
> > ><br>
> > > Hi,<br>
> > ><br>
> > > like I said in my other reply, this is a configuration interface,<br>
> > > not something for all applications to use. Protocol comments below<br>
> > > assuming, that this will be a configuration interface and that the<br>
> > > generic idea is acceptable.<br>
> ...<br>
> > > If I change the mode on two different outputs, how do I know which<br>
> > > action_done corresponds to which request? [Wang, Quanxian] right,<br>
> > > add wl_output parameter.<br>
> ><br>
> > No. If I do two mode set operations on the same wl_output, then again<br>
> > I would not know which answer was for which. [Wang, Quanxian] I know<br>
> > you mean. Yes, if the same client has more threads which send mode<br>
> > change at the same time, we have to use unique number to stand for<br>
> > every operation.<br>
><br>
> That unique number could be a serial, but here more appropriate is a unique number for each request. You can let Wayland do all the unique number management for you by using the feedback object design I referred to below. After all, a Wayland protocol object
 is essentially just a unique number. They are very cheap.<br>
><br>
> That is why you almost never need to manually fiddle with "unique numbers" in the protocol.<br>
><br>
> > Instead, a generic pattern for this kind of "return data" is to let<br>
> > the original request also create a feedback protocol object. This<br>
> > object is unique to the request that was sent, and can deliver any<br>
> > return data without any ambiguity. An example of a feedback object is<br>
> > wl_callback, except it can only deliver "done", not "yes"/"no"; not<br>
> > delivering anything will cause problems. [Wang, Quanxian] Good,<br>
> > thanks.<br>
> ><br>
> > ><br>
> > > What if move succeeds but mode change fails? Wouldn't that leave the<br>
> > > output in an unwanted state which is neither the original nor the<br>
> > > wanted setting? [Wang, Quanxian] one by one. Not support complex. If<br>
> > > you have such case, have to turn back. Call another move back. But<br>
> > > firstly make sure the previous is successful.<br>
> ><br>
> > That will require a lot of roundtrips, and it essentially forces the<br>
> > compositor to show all the intermediate steps on the monitors. IOW,<br>
> > that is designed to be both slow and glitchy. That's not how you<br>
> > should do dynamic mode setting. I think you are going to need atomic<br>
> > group operations. [Wang, Quanxian] Yes, we could provide a request<br>
> > with more parameters setting(group operations). Just like many<br>
> > parameters in weston_output_switch_mode.<br>
><br>
> Except you would need to let it cover an arbitrary number of outputs in one go. That means that you will need something like what wl_surface.commit does. Having a request with a huge number of arguments is not only ugly but inflexible, and cannot be extended
 in the future.<br>
><br>
> > > The solution to this would tie in with the solution to take changes<br>
> > > atomic. For instance, to prepare for a configuration change, one<br>
> > > might create a change object in the protocol, store all changes in<br>
> > > that object, and then commit that set of changes atomically. Then<br>
> > > have one return value: the whole set either succeeds or fails.<br>
> > ><br>
> > > I guess you could look for inspiration in the DRM atomic mode<br>
> > > setting API. I don't know how the RandR X11 protocol works, if that<br>
> > > would be a good example also.<br>
><br>
> Thanks,<br>
> pq<br>
> _______________________________________________<br>
> wayland-devel mailing list<br>
> <a href="mailto:wayland-devel@lists.freedesktop.org" target="_blank">wayland-devel@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">
http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
><br>
><br>
><br>
><br>
> -- <br>
>   Jasper<o:p></o:p></span></p>
</div>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"><br>
<br clear="all">
<br>
-- <br>
  Jasper<o:p></o:p></span></p>
</div>
</div>
</body>
</html>