<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Il 14/03/2016 00:09, Fabio Fantoni ha scritto:<br>
    <blockquote cite="mid:56E5F33E.8010400@m2r.biz" type="cite">
      <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
      Il 12/03/2016 23:13, Fabio Fantoni ha scritto:<br>
      <blockquote cite="mid:56E49476.2000805@m2r.biz" type="cite">
        <meta content="text/html; charset=utf-8"
          http-equiv="Content-Type">
        <br>
        <br>
        <div class="moz-cite-prefix">Il 10/03/2016 22:58, Yury Shvedov
          ha scritto:<br>
        </div>
        <blockquote cite="mid:56E1EDEF.4020908@lvk.cs.msu.su"
          type="cite">
          <meta content="text/html; charset=utf-8"
            http-equiv="Content-Type">
          <br>
          <div class="moz-cite-prefix">On 03/10/2016 06:04 PM, Fabio
            Fantoni wrote:<br>
          </div>
          <blockquote cite="mid:56E18CF1.7060002@m2r.biz" type="cite">
            <meta content="text/html; charset=utf-8"
              http-equiv="Content-Type">
            <span id="result_box" class="" lang="en"><span class="hps">In

                recent</span> <span class="hps">years</span> <span
                class="hps">have</span> <span class="hps">done too
                little</span> <span class="hps">programming and my</span><span
                class="hps"> memory is</span> <span class="hps">bad</span>
              <span class="hps">lately.</span></span><br>
          </blockquote>
          <blockquote cite="mid:56E18CF1.7060002@m2r.biz" type="cite">
            About the performance problem I remember something like a
            big problem also in xspice that seems improved a lot with
            deferred fps:<br>
            <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://lists.freedesktop.org/archives/spice-devel/2012-August/010276.html">https://lists.freedesktop.org/archives/spice-devel/2012-August/010276.html</a><br>
            Can be useful for this project or with wayland/weston is
            possible do something similar in a different and/or better
            way?<br>
          </blockquote>
          Of corse this is useful like all the stuff you found in the
          net last time. But you chaotically offers me many different
          things without any result except my "OK, I will take a look".
          Because I have not much time to investigate it with you. You
          are looking for the answers on your questions in the internet,
          while I have a couple in the code. I see good way for the next
          steps and have tried to explain them to you. I'm afraid that
          you didn't understand them, so I'll try again at the bottom of
          this message.<br>
          After that I suggest to decide and fix what we will do next.<br>
          <blockquote cite="mid:56E18CF1.7060002@m2r.biz" type="cite">
            In the weekend probably I'll look better the weston code but
            I not know if I'll have needed freetime and <span
              id="result_box" class="short_text" lang="en"><span
                class="hps">knowledge for doing something useful for the
                mainly problem in a short time.</span></span><br>
          </blockquote>
          Maybe you better to do something in what you sure? How about
          fps tests like ones in your link?<br>
        </blockquote>
        <br>
        I did a fast test with screen-share for see if it can works also
        with other compositor instead rdp but was failed and I not found
        nothing in weston log about.<br>
        I tried to see if was possible have weston working local normal
        with drm (3d and good performance) and additionally add spice
        session and after check if was possible and better add a
        "deferred fps" in screen-share to limit the screen data that
        spice-compositor must elaborate.<br>
        I take a fast look also to qemu and xspice code trying to
        understand the initial improvement to do about image processing
        but seems that qemu do operation with vm qxl drivers and xspice
        similar copied by it and using qxl driver.<br>
        I <span id="result_box" class="short_text" lang="en"><span
            class="hps">I do not know</span> <span class="hps">if</span>
          <span class="hps">this is possible in other better way with
            weston (</span></span><span id="result_box"
          class="short_text" lang="en"><span class="hps"><span
              id="result_box" class="" lang="en"><span class="hps">I
                have no</span> <span class="hps">knowledge to
                understand</span> <span class="hps">if it is</span> <span
                class="hps">something like</span> <span class="hps">what
                you mean</span> <span class="hps">about</span> <span
                class="hps">making a</span> <span class="hps">spice_renderer</span></span>).<br>
          </span></span><span id="result_box" class="" lang="en"><span
            class="hps">Maybe tomorrow</span> <span class="hps">I will
            have</span> <span class="hps">a few more hours</span> <span
            class="hps">of time</span> <span class="hps">and do not
            know</span> <span class="hps">whether to try</span> <span
            class="hps">anyway</span> <span class="hps">to</span> <span
            class="hps">add</span> <span class="hps">deferred</span> <span
            class="hps">fps</span> <span class="hps">quickly from</span>
          <span class="hps">xspice or looking something about weston
            things you write below.<br>
          </span></span></blockquote>
      <br>
      Unfortunately I must did other things today and I had only short
      time to give another fast look to code, I did also another test (<span
        id="result_box" class="short_text" lang="en"><span class="hps">to

          find</span> <span class="hps">some data</span> <span
          class="hps">on how is useful to proceed</span></span> without
      waste time), I found high cpu usage (only one core, like one spice
      <span id="result_box" class="short_text" lang="en"><span
          class="hps">efficiency</span> <span class="hps">problem that</span>
        <span class="hps">I had noticed</span> <span class="hps">long
          ago instead weston ifself</span></span>) even if without any
      spice session, then I enabled spice debug and I see input fps to
      967 (with no spice session and without any screen change I
      suppose), then deferred fps seems a good fast workaround to do for
      start (I'll try to implement it following xspice next weekend) and
      try to send only the difference (where possible) seems probably
      the best thing as you said.<br>
    </blockquote>
    <br>
    I unfortunately had short time also this weekend.<br>
    I tried to search a <span id="result_box" class="short_text"
      lang="en"><span class="">more efficient way to limit fps send to
        spice (instead of adding another buffer like xspice) and
        probably I found something about increase delay with
        "wl_event_source_timer_update", I tried to increased delay set
        to time_start in spice_output_start_repaint_loop function but
        the fps are still up near 1000.<br>
        I checked in rdp compositor and seems that delay is in
        rdp_output_repaint instead of rdp_output_start_repaint_loop:<br>
        "wl_event_source_timer_update(output->finish_frame_timer,
        16);"<br>
        I suppose that now in spice compositor there a delay only at the
        loop starts and/or "b->core->timer_start
        (output->wakeup_timer, 1);" in "on_wakeup" (if is this the 1
        ms delay will explain the actual fps near to 1000)<br>
        Can someone tell me if my </span></span><span id="result_box"
      class="short_text" lang="en"><span class="">assumptions are right
        and if right what is the better way to add a delay, using it for
        limit fps and make it settable (for example max fps </span></span><span
      id="result_box" class="short_text" lang="en"><span class=""><span
          id="result_box" class="short_text" lang="en"><span class="">minimum
            to 10, </span></span></span></span><span id="result_box"
      class="short_text" lang="en"><span class=""><span id="result_box"
          class="short_text" lang="en"><span class="">maximum</span> <span
            class="">to 100 and default to 30</span></span>) without </span></span><span
      id="result_box" class="short_text" lang="en"><span class="">negative
        effects please?<br>
        <br>
        I also tried to enable a weston debug to understand something
        faster and use it as help in some fast tests, I tried with a
        fast google search founding only WAYLAND_DEBUG=1 but seems that
        weston debug output is partial or missed, is there another way?<br>
        I also found a "#define DEBUG 2" in compositor-spice-conf.h,
        this I suppose should force weston debug level using spice
        compositor (with COMPOSITOR_SPICE_CONF_H) but I did a grep
        without finding something using it, can someone help me to
        understand please?<br>
        is the file </span></span><span id="result_box"
      class="short_text" lang="en"><span class=""><span id="result_box"
          class="short_text" lang="en"><span class="">compositor-spice-conf.h
            needed or can be removed? (seem used only for change debug
            and set spice compositor version but with a grep version
            seems unused and I suppose if will be needed can be setted
            always and in compositor-spice.c instead)<br>
            <br>
            For any developer </span></span></span></span><span
      id="result_box" class="short_text" lang="en"><span class=""><span
          id="result_box" class="short_text" lang="en"><span class=""><span
              id="result_box" class="short_text" lang="en"><span>reading</span>
              <span>this thread</span> <span class="">for the first
                time, here the spice compositor repository:
                <a class="moz-txt-link-freetext" href="https://github.com/ein-shved/compositor-spice">https://github.com/ein-shved/compositor-spice</a><br>
                And here latest patch to make faster see the spice
                compositor additions/changes rebased on recently weston
                upstream:
                <a class="moz-txt-link-freetext" href="https://github.com/Fantu/compositor-spice/commit/3a75bb84da4650dd186f3f025c3640a65600bc6d">https://github.com/Fantu/compositor-spice/commit/3a75bb84da4650dd186f3f025c3640a65600bc6d</a> 
                -
                <a class="moz-txt-link-freetext" href="https://github.com/Fantu/compositor-spice/commits/rebase/spice-master">https://github.com/Fantu/compositor-spice/commits/rebase/spice-master</a><br>
                <br>
                <br>
                <br>
              </span></span>Thanks for any reply and sorry for my bad
            english.<br>
            <br>
          </span></span></span></span>
    <blockquote cite="mid:56E5F33E.8010400@m2r.biz" type="cite"> <br>
      <blockquote cite="mid:56E49476.2000805@m2r.biz" type="cite"><span
          id="result_box" class="" lang="en"><span class="hps"> <br>
          </span></span><br>
        <blockquote cite="mid:56E1EDEF.4020908@lvk.cs.msu.su"
          type="cite">
          <blockquote cite="mid:56E18CF1.7060002@m2r.biz" type="cite"> I
            started to do small things fast and easy for doing something
            in short time and start to watch something about weston and
            this project code<br>
            Things done I think/hope is still something useful because
            make possible do some fast tests (I think useful for a
            project in development), remote use (lan or wan) that I
            think is the main goal of this project, auth (password) is
            needed for at least an essential security (mainly for wan
            test without vpn), image compression to make it usable on
            <1gbps network <span id="result_box" class="short_text"
              lang="en"><span class="hps">and not</span> <span
                class="hps">throttle the</span> <span class="hps">network</span></span>,
            and additional wan compressions to make it usable on wan
            connections (if are not too bad) based on my spice
            experience.<br>
          </blockquote>
          There much more ways to decrease the network usage and
          increase fps except compression.<br>
          <blockquote cite="mid:56E18CF1.7060002@m2r.biz" type="cite"> I
            used/tried many remote access softwares, mainly for virtual
            machine but not only, spice is a very good one, with high
            quality but <span id="result_box" class="" lang="en"><span
                class="hps">with</span> <span class="hps">efficiency</span><span
                class="hps">/</span><span class="hps">latency issues</span>
              <span class="hps">visible</span> <span class="hps">in
                most</span> recent use <span class="hps">cases.<br>
                I'm trying to help this project because seems the better
                quality and full open source project I found to reach
                one of my </span></span><span class="gt-baf-back
              gt-baf-hl">purpose: remote access and remote assistance on
              linux physical machine; one missed or bad thing on actual
              linux machines and one blocking step for windows->linux
              migration in many cases. There is also xspice project in </span><span
              class="gt-baf-back gt-baf-hl"><span id="result_box"
                class="short_text" lang="en"><span class="hps">a more
                  advanced state but is based on xorg that is old, </span></span></span><span
              class="gt-baf-back gt-baf-hl"><span id="result_box"
                class="short_text" lang="en"><span class="hps"><span
                    id="result_box" class="" lang="en"><span class="hps">with


                      less</span> <span class="hps">potential and</span>
                    <span class="hps">I suppose it is</span> <span
                      class="hps">a bad</span> <span class="hps">long-term</span>
                    <span class="hps">choice.<br>
                    </span></span></span></span></span></blockquote>
          I'm appreciate your help and interest (the windows to linux
          migration is really good point!) and I hope one day this
          project became something we wand to see.<br>
          <blockquote cite="mid:56E18CF1.7060002@m2r.biz" type="cite"><span
              class="gt-baf-back gt-baf-hl"><span id="result_box"
                class="short_text" lang="en"><span class="hps"><span
                    id="result_box" class="" lang="en"><span class="hps">
                    </span></span></span></span>Another thing is that 3d
              hw acceration is </span><span class="gt-baf-back
              gt-baf-hl"><span id="result_box" class="short_text"
                lang="en"><span class="hps">increasingly necessary and
                  in future will be </span></span>essential for any use
              (also basis) on any device (including virtual machine).
              Trying to implement the better solution as possible to
              have 3d hw support and improve spice </span><span
              id="result_box" class="short_text" lang="en"><span
                class="hps">efficiency and latency seem more easy and
                fast here before instead of doing in virtual machine or
                I'm wrong?<br>
              </span></span></blockquote>
          I'm afraid I didn't catch last sentence. What doing in virtual
          machine?<br>
          <br>
          Returning to our main topic. How do I suppose to increase fps
          and decrease network usage?<br>
          The main idea is to decrease the amount of image data sended
          via network. For example, we have an application window moving
          on the desktop background. The bad way is to compose the whole
          desktop image on each step on the server and send it to
          client. But the better way is to send to client 2 images once
          and tell him to change position of one of them when it is
          needed. I think this example is obvious for you and you should
          know that spice can perfectly handle such tasks (moving images
          remotely and much more). This is the first aim I want to
          achieve: to cache the per-application surface on the client
          side, and left the building of final desktop image to it. <br>
          This can be done by creating the spice_renderer and using it
          instead of pixman_renderer for distributed painting.<br>
          <br>
          Another thing I want to do first is to understand, what does
          the rdp-compositor do before sending the image data? The
          learning how dose rdp_output_repaint and other functions works
          will help us to find another one already passed way to
          optimisation.<br>
          <br>
          What do you think? Do you have another suggestions about the
          way of this spice-compositor developing?<br>
        </blockquote>
        <br>
        <span id="result_box" class="" lang="en"><span class="hps">I'm
            having</span> <span class="hps">difficulty</span> <span
            class="hps">to understand</span> <span class="hps">at least
            the basics</span> <span class="hps">of</span> <span
            class="hps">what is need</span><span class="hps"></span>ed <span
            class="hps">in a short time</span><span>, for sure</span> <span
            class="hps">you know</span> <span class="hps">much more.</span><br>
          <span class="hps">Maybe</span> <span class="hps">about</span>
          <span class="hps">tips on what to do</span> <span class="hps">can</span>
          <span class="hps">be helpful</span> <span class="hps">to post</span>
          <span class="hps">the current</span> <span class="hps">draft
            of the</span> <span class="hps">patch</span> <span
            class="hps">as an RFC</span> <span class="hps atn">(</span><span>request
            for comments</span><span>)</span> <span class="hps">on</span>
          <span class="hps">wayland</span><span class="atn">-</span><span
            class="">devel</span> <span class="hps">and spice</span><span
            class="atn">-</span><span>devel</span> <span class="hps">and</span>
          <span class="hps">probably</span> <span class="hps">some</span>
          <span class="hps">expert</span> <span class="hps">developers</span>
          <span class="hps">about</span> <span class="hps">them</span>
          <span class="hps">can</span> <span class="hps">fastly</span>
          <span class="hps">give</span> <span class="hps">some</span> <span
            class="hps">advices.<br>
            I did the same with other things </span></span><span
          id="result_box" class="" lang="en"><span class="hps">and they
            gave me</span> <span class="hps">useful information to</span>
          <span class="hps">make fast</span> <span class="hps">patches</span>
          <span class="hps">I needed</span> <span class="hps">analyzing</span>
          <span class="hps">a few specific</span> <span class="hps">things</span>
          <span class="hps">instead of</span> <span class="hps">read</span><span
            class="hps">/</span><span class="hps">understand</span> <span
            class="hps">all the code</span> <span class="hps">of</span>
          <span class="hps">large pieces. Probably also with this can be
            useful to understand something useful I can do </span></span><span
          id="result_box" class="" lang="en"><span class="hps"><span
              id="result_box" class="short_text" lang="en"><span
                class="hps">the first</span> <span class="hps">weekends
                instead spent all time to learn, but if learn many
                things before is really needed I'll try to do it. </span></span></span></span><span
          id="result_box" class="" lang="en"><span class="hps"><span
              id="result_box" class="short_text" lang="en"><span
                class="hps"><span id="result_box" class="" lang="en"><span
                    class="hps">It seems that</span> <span class="hps">unfortunately</span>
                  <span class="hps">I'm no longer</span> <span
                    class="hps">quick to</span> <span class="hps">learn/</span><span
                    class="hps">understand</span> <span class="hps">as
                    I did</span> <span class="hps">years ago (</span></span></span></span></span></span><span
          id="result_box" class="" lang="en"><span class="hps"><span
              id="result_box" class="short_text" lang="en"><span
                class="hps"><span id="result_box" class="" lang="en"><span
                    class="hps"><span id="result_box" class="" lang="en"><span
                        class="hps"><span id="result_box" class=""
                          lang="en"><span class="hps">years ago</span> <span
                            class="hps">unfortunately</span></span>,
                        however,</span> <span class="hps">I wasted</span>
                      <span class="hps">thousands of</span> <span
                        class="hps">hours</span> <span class="hps">with</span>
                      <span class="hps">unnecessary</span> <span
                        class="hps">proprietary projects instead</span></span>)</span></span></span></span></span></span>
        :(<span id="result_box" class="" lang="en"><span class="hps"><span
              id="result_box" class="short_text" lang="en"><span
                class="hps"><br>
                <br>
                Thanks for any reply and sorry for my bad english.<br>
                <br>
              </span></span></span></span>
        <blockquote cite="mid:56E1EDEF.4020908@lvk.cs.msu.su"
          type="cite"> <br>
          <pre class="moz-signature" cols="72">Kind regards
Yury Shvedov</pre>
        </blockquote>
        <br>
      </blockquote>
      <br>
    </blockquote>
    <br>
  </body>
</html>