bugGNU Octave - Bugs: bug #45028, Use...

 
 

bug #45028: Use "visible","off" for printing

Submitter:  Michael Godfrey <godfrey>
Submitted:  Tue 05 May 2015 04:35:36 PM UTC
   
 
Category:  Plotting with OpenGL Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Performance
Status:  Invalid Assigned to:  None
Originator Name:  Godfrey Open/Closed:  * Closed
Release:  * dev Operating System:  * Any
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Wed 24 Oct 2018 11:25:45 AM UTC, comment #20: 

No, I think this is not relevant anymore and I'll close this report as "invalid".

Pantxo Diribarne <pantxo>
Group Member
Wed 15 Aug 2018 04:31:27 AM UTC, comment #19: 

Is this bug still relevant?  We no longer use OSMesa for offscreen printing, but rather built-in Qt features.

Rik <rik5>
Group administrator
Sat 23 Sep 2017 04:34:52 PM UTC, comment #18: 

Andreas - see bug #50479. This affects Debian unstable and will affect Debian buster. All distributions are now using libglvnd, which breaks using OSMesa and Mesa together. Maybe now is the time to look at moving OSMesa support into a separate auxiliary executable and piping the OpenGL buffer to it.

Mike Miller <mtmiller>
Group Member
Sat 23 Sep 2017 01:24:30 PM UTC, comment #17: 

@Mike: I'm using the OSMesa rendering on Debian stretch and jessie and wonder why you say there are problems on "any current Arch, Debian, or Fedora distribution"

Andreas Weber <andy1978>
Group Member
Wed 20 Sep 2017 06:23:15 PM UTC, comment #16: 

The list of known problems with OSMesa keeps growing, marking this as postponed. OSMesa now doesn't work on any system with NVidia, any Ubuntu 14.04 system, any Windows system, and now any current Arch, Debian, or Fedora distribution. Someone is welcome to close this as won't fix if it doesn't seem likely that this will go anywhere.

Mike Miller <mtmiller>
Group Member
Wed 13 May 2015 07:41:56 PM UTC, comment #15: 

As you know OSMesa is used with graphics_toolkit FLTK and Qt if "visible"=="off". But we have some other bug reports (http://wiki.octave.org/OSMesa#known_problems) which makes OSMesa a bad choice for users with proprietary Nvidia drivers or on windows.

Andreas Weber <andy1978>
Group Member
Sun 10 May 2015 07:52:02 PM UTC, comment #14: 

John,

Here is a summary of behavior with export LIBGL_DRI3_DISABLE=1
set running locally on fedora 21 with Intel HD 6000 Graphics:

Using fltk and visible on, print zzz.pdf gives seg fault
as before. zzz.pdf contains an empty frame.

Using qt and visible on, print zzz.pdf results in X11 crash!

So, fltk really works fully locally and through ssh.

Through ssh qt does not display plots correctly, but
visible off print zzz.pdf works.

Matlab has quite a lot of commentary about defective
graphics systems and through ssh it complains that
software Opengl has been set and some features will not
be available...



Michael Godfrey <godfrey>
Group Member
Sun 10 May 2015 12:27:41 PM UTC, comment #13: 

I can add that visible off is also not needed
with this fix.  During a print command the figure
flickers around as it does locally, but this is more
obvious since it takes longer.

I still think that incorporating the sequence
in the print command:

1. save visible state.
2. If it was on, turn it off
3. do the print command
4. restore original visible state, if needed.

May be a good idea.

Michael Godfrey <godfrey>
Group Member
Sun 10 May 2015 12:20:02 PM UTC, comment #12: 

Also, with

export LIBGL_DRI3_DISABLE=1

print commands seem to generate the correct
output even though the plot that appears on the local
screen is incomplete.

This was done with graphics_toolkit('qt')

Switching to graphics_toolkit('fltk')
appears to fix the incomplete plot problem.
And, the edit menu items seem to work i.e. can turn
grid lines on and off, ...

The incomplete qt plotting could be the same bug as
44916.

Based on this limited testing this makes ssh usage
essentially fully functional for fltk.

The problem with X11-mesa was reported here:
https://bugzilla.redhat.com/show_bug.cgi?id=1174257



Michael Godfrey <godfrey>
Group Member
Sun 10 May 2015 11:57:17 AM UTC, comment #11: 

Finally, setting:

export  LIBGL_DRI3_DISABLE=1

Causes glxgears to run and also causes octave
to at least try to produce a plot when ssh'ed
to remote machine.

So far,
plot(1:100) produces the expected plot, but turning
on grid only displays the first 2 grid lines...

The first test was:

>> plot(1:100)

libGL error: failed to authenticate magic 73
libGL error: failed to load driver: i965

>>


Matlab also produces similar error messages...
 

Michael Godfrey <godfrey>
Group Member
Wed 06 May 2015 12:57:45 PM UTC, comment #10: 

If using ssh login to a remote machine and:

octave --no-gui
h = figure ("visible", "off");

Octave hangs. The gdb bt at hang is attached as: fig_bt.

When this is run locally, no figure appears, but the
(visible off) figure is created.

This was done with X11Forwarding on.



(file #33940)

Michael Godfrey <godfrey>
Group Member
Wed 06 May 2015 09:31:48 AM UTC, comment #9: 

Printing invisible figures currently doesn't work on windows so this may not be a cross-platform solution ATM.

FTR, instead of using copyobj, you may want to use something like


hf = figure ();
## plot in this figure
s = hdl2struct (hf);
s.properties.visible = "off";
htmp = struct2hdl (s, 0);
print (htmp, ...)
...


hdl2struct/struct2hdl is basically what is used in copyobj.

Pantxo Diribarne <pantxo>
Group Member
Tue 05 May 2015 06:28:34 PM UTC, comment #8: 

By the way, whatever makes a remote figure("visible","off")
hang should not be required I think.  So, fixing that
would be useful in any case.

Michael Godfrey <godfrey>
Group Member
Tue 05 May 2015 06:26:10 PM UTC, comment #7: 

John:  Right. If it helps with that too, great!

Michael Godfrey <godfrey>
Group Member
Tue 05 May 2015 06:14:10 PM UTC, comment #6: 

Well, we need some way to print on Windows systems.  See https://savannah.gnu.org/bugs/index.php?44916

John W. Eaton <jwe>
Group administrator
Tue 05 May 2015 06:04:58 PM UTC, comment #5: 

But, John, do not let this distract you now
unless it helps solve a blocking bug for 4.0

Michael Godfrey <godfrey>
Group Member
Tue 05 May 2015 06:03:38 PM UTC, comment #4: 

I just tried a remote login and the visible off/on
sequence and, even though it does not display a plot
when run locally, it hangs at:
h=figure(1,"visible", "off")

So, not so good, but still possibly an improvement over
the current flickering. And, something like this should
work. Maybe, even, John's idea is closer.



Michael Godfrey <godfrey>
Group Member
Tue 05 May 2015 05:57:31 PM UTC, comment #3: 

John,
When I did this manually, by:

h = gcf();
figure(h, "visible", "off");
print zzz.pdf
figure(h, "visible", "on");

_______________
I did not see any brief display.  I was going to try:
fn = tempname ();
 __osmesa_print__ (h, fn, "pdf");

but since print zzz.pdf worked, I did not try it.
Would that have worked better/differently?

nyhow, a brief display of the plot is not as bad as the
current flicker and color change. But, it probably will
not work remotely.

Michael Godfrey <godfrey>
Group Member
Tue 05 May 2015 05:27:00 PM UTC, comment #2: 

Sorry, I edited and failed to change the initialization of HNEW to be TMP_FIG.

John W. Eaton <jwe>
Group administrator
Tue 05 May 2015 05:25:30 PM UTC, comment #1: 

Perhaps we can use something like this


hnew = -1;
unwind_protect
  tmp_fig = copyobj (fig);
  set (tmp_fig, 'visible', 'off');
  print (tmp_fig, ...);
unwind_protect_cleanup
  if (tmp_fig > 0)
    close (tmp_fig)
  endif
end_unwind_protect


Then the original figure would not flicker or be removed.

Unfortunately, as things currently work this briefly displays the copy of the figure on the screen.  But we might be able to fix that by modifying the copyobj function to accept a list of properties to apply after making the copy.  Then it would be


tmp_fig = copyobj (fig, 'visible', 'off');


to create an invisible copy of an existing figure FIG.

Using unwind_protect should properly manage the object so it is deleted no matter how control leaves the print function.

John W. Eaton <jwe>
Group administrator
Tue 05 May 2015 04:35:36 PM UTC, original submission:  

Now that, for qt and fltk, printing works with visible off, it
would be useful if the print command used this capability. The
advantages would include:

1. More efficient plot processing.
2. No 'flickering' of the plot while print runs. Actually, the
   plot would disappear and then reappear.
3. Remote printing would work again, without having to switch
   from use of OpenGL, etc., and without X11.
4. This would also "fix" bug #44823.

It appears after a few experiments, that this can be done
in print.m, before the actual print code:
h =gcf();
--- check for visible on or off---, if on:
figure(h, "visible", "off");
--- print code---
reset visible state.
return

A complication is that all the rror paths will need to
be checked.


Michael Godfrey <godfrey>
Group Member

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

Attached Files
file #33940:  fig_bt added by godfrey (15KiB - application/octet-stream)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by rik5 (Posted a comment)
  • -email is unavailable- added by andy1978 (Posted a comment)
  • -email is unavailable- added by pantxo (Posted a comment)
  • -email is unavailable- added by jwe (Posted a comment)
  • -email is unavailable- added by godfrey (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follow 5 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2018-10-24 mtmiller Carbon-CopyRemoved 80942 -
    2018-10-24 pantxo StatusPostponed Invalid
        Open/ClosedOpen Closed
    2017-09-20 mtmiller StatusNone Postponed
    2015-05-06 godfrey Attached File- Added fig_bt, #33940

    Back to the top

    Powered by Savane 3.13-cf05.
    Corresponding source code