0
\$\begingroup\$

I've recently rebuild shaders for my program and it stopped "working" ( black screen ) on OS X ( El Capitan ), but it's ok on Linux. What could be the cause?

There are no shader compilation errors, and here is my shader code:

https://github.com/Marqin/YuriaViewer/blob/master/vertex.glsl

Keep in mind that this software worked on El Capitan with OpenGL 4.1 before shader rewrite. Here are my glfw hints:

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

My program also is checking for GL_ARB_gpu_shader_fp64 and it's available on my Macbook ( Macbook Air 2013 mid ).

EDIT1:

I've "debugged" it a little and it looks that i is always lesser than vis on OS X, that's why it's black.

EDIT2:

I made a simple test - I've typed all uniform values in shader by hand and now it wasn't black, but I've got some gibberish on screen. Then I've changed every dvec3 and dvec2 to float versions and it showed nice fractal. So it looks like double is not working on OS X. But how can it be? It's saying that GL_ARB_gpu_shader_fp64 is available and it even doesn't complain when I request it in vertex shader.

EDIT3:

It works on iMac with R9 M395. So it's problem with Intel hardware ( or problem with OS X Intel driver ).

\$\endgroup\$
  • \$\begingroup\$ What did you change it from? Can you break it down to see where the problem is? For example, if you just use the output of color() do you see anything? If so, then the problem's probably with the hsv2rgb() function. Otherwise it's probably with the color() function. Also, are you producing any NaN or Infs? There's a lot of divides in there. Are any of them dividing by 0? Different drivers handle that differently. \$\endgroup\$ – user1118321 Jan 6 '16 at 19:16
  • \$\begingroup\$ I've "debugged" it a little, and it looks that i is always < than vis, so it's always black. About 0 - w, h, zoom, posX, posY are never 0 before sending them to GPU. Maybe Uniform Buffer works differently on OS X and shader sees some 0's there on OS X? \$\endgroup\$ – Marqin Jan 6 '16 at 19:23
  • \$\begingroup\$ Maybe OS X drivers have problems with loops? Or it's abs doesn't work with doubles ( it should work according to 4.1 specification ). \$\endgroup\$ – Marqin Jan 6 '16 at 19:25
  • \$\begingroup\$ @user1118321, it looks that double is the culprist. \$\endgroup\$ – Marqin Jan 6 '16 at 19:45
  • \$\begingroup\$ I've updated question, because it's working on Mac with AMD GPU ( and my Nvidia linux ) so it's probably problem with Intel. \$\endgroup\$ – Marqin Jan 11 '16 at 14:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.