[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-user: PCB+GL Testers (please test)



Hello people,

I've got a load of changes I've been working on recently in PCB+GL, this
time on my "local_customisation_no_pours" branch. I've been working
there to avoid disturbing users who have enjoyed stability on the
"before_pours" branch. (It also suits me to develop on top of my own
local customisations).

There is a bit of a mega-commit on the end of it which does the
following (it will be split up in due course):

    Play with GLSL shader for rendering line caps and circles
    
    And of course.. typically, a million other little fixes:
    
     - Primitive rendering object changed from GL_TRIANGLES to GL_TRIANGLE_STRIP
     - Cache of tristrip data per contour (HACK: in the core)
     - Rendering using mapped VBOs rather than just arrays
     - Updated layer depth code, so we render with "z" in world coordinates
     - Space navigator joystick support fixes against later kernels
    
    Bugs:
     - Layer depths will be wrong for reversed layer group numbering
     - Pixel shader ought to be switched off for polygon fill?
     - hidgl_draw_rect stubbed out (for benchmarking)
     - Draw Element mark stubbed out (for benchmarking)
     - Draw crosshair stubbed out (for benchmarking)
     - Draw crosshair not updated to render in world coordinates


Some of the above "Bugs" mean it isn't quite ready for use yet, but it
should be indicative of performance available.

I just tried it on my (very old) machine with an NVidia card.. and after
fixing a dumb mistake in the VBO binding code (which for some reason
worked despite my error on Intel drivers), I have it rendering again. 

Here is the gotcha.. the VBO code didn't really work on the NVidia
machine.. rendering got really slow. If you discover this, you can force
it back to using "Arrays" rather than VBOs with this patch:

diff --git a/src/hid/common/hidgl.c b/src/hid/common/hidgl.c
index 3ab77c6..3956ad5 100644
--- a/src/hid/common/hidgl.c
+++ b/src/hid/common/hidgl.c
@@ -111,7 +111,7 @@ hidgl_init_triangle_array (triangle_buffer *buffer)
   glBindBuffer (GL_ARRAY_BUFFER, buffer->vbo_id);
 
   buffer->triangle_array = NULL;
-  buffer->local = false;
+  buffer->local = true;
   hidgl_reset_triangle_array (buffer);
 }


Anyhow.. People who've been playing with / using the PCB+GL branches,
please pull my "local_customisation_no_pours" branch and compare for any
differences. (The "benchmark" action might help here)

If VBO rendering slows you down, try the above patch and _PLEASE_ let me
know. It might be that I need to detect this and avoid using
glMapBuffers() on certain hardware / drivers. (The aim there was to
avoid having to memcpy data we're generating into the GPU).

Throw your "usual" complexity of board at it.. how fast is it
("benchmark") at full screen / whatever resolution you normally use it
at, with all the layers switched on. How about with a reduced set of
layers (if you usually turns some of them off).

Throw the most complex usually-hideously-slow board at it.. how does it
perform?


Best wishes.

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)
Tel: +44 (0)1223 748328 - (Shared lab phone, ask for me)



_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user