Intel graphics - Java 3d misdetecting OpenGL version?

View: New views
11 Messages — Rating Filter:   Alert me  

Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Trying to run my app with the JOGL renderer is producing an error (apparently, it thinks GL version is only 1.1, which doesn't fit with either what the driver states or QueryGL (http://download.java.net/media/java3d/webstart/prototype/QueryGL.jnlp) or QueryProperties (http://download.java.net/media/java3d/webstart/test/QueryProperties.jnlp) show.

Again, this is on Mobile Intel GMA 4500MHD, which is not great, but we have to be able to support these chips.  This machine is capable of running e.g., GoogleEarth in OpenGL mode.

Any ideas?

The exception:

javax.media.j3d.IllegalRenderingStateException: Java 3D ERROR : OpenGL 1.2 or better is required (GL_VERSION=1.1)
        at javax.media.j3d.JoglPipeline.setupCanvasProperties(JoglPipeline.java:8462)
        at javax.media.j3d.JoglPipeline.access$400(JoglPipeline.java:32)
        at javax.media.j3d.JoglPipeline$ContextQuerier.init(JoglPipeline.java:9123)
        at javax.media.j3d.JoglPipeline$QueryCanvas.doQuery(JoglPipeline.java:9033)
        at javax.media.j3d.JoglPipeline.createQueryContext(JoglPipeline.java:7013)
        at javax.media.j3d.Canvas3D.createQueryContext(Canvas3D.java:4906)
        at javax.media.j3d.Canvas3D.createQueryContext(Canvas3D.java:3659)
        at javax.media.j3d.Renderer.doWork(Renderer.java:460)
        at javax.media.j3d.J3dThread.run(J3dThread.java:256)

DefaultRenderingErrorListener.errorOccurred:
CONTEXT_CREATION_ERROR: Renderer: Error creating Canvas3D graphics context for queryProperties()
graphicsDevice = Win32GraphicsDevice[screen=0]
canvas = org.mitre.caasd.mitre3d.java3dutil.OverlayCanvas3D[canvas0,0,0,800x600,invalid]
Exception in thread "main" java.lang.IllegalStateException: Canvas3D: Non-recoverable graphics configuration error

QueryGL output:
GL_VERSION = 2.0.0 - Build 7.15.10.5029
GL_VENDOR = Intel
GL_RENDERER = Intel Cantiga
 
GL_MAX_LIGHTS = 16
GL_MAX_TEXTURE_SIZE = 2048
GL_MAX_3D_TEXTURE_SIZE = 128
GL_MAX_CLIP_PLANES = 6
GL_MAX_TEXTURE_UNITS = 8
 
GL_EXTENSIONS =  
    GL_3DFX_texture_compression_FXT1
    GL_ARB_depth_texture
    GL_ARB_draw_buffers
    GL_ARB_fragment_program
    GL_ARB_fragment_shader
    GL_ARB_multitexture
    GL_ARB_occlusion_query
    GL_ARB_pixel_buffer_object
    GL_ARB_point_parameters
    GL_ARB_point_sprite
    GL_ARB_shader_objects
    GL_ARB_shading_language_100
    GL_ARB_shadow
    GL_ARB_texture_border_clamp
    GL_ARB_texture_compression
    GL_ARB_texture_cube_map
    GL_ARB_texture_env_add
    GL_ARB_texture_env_combine
    GL_ARB_texture_env_crossbar
    GL_ARB_texture_env_dot3
    GL_ARB_texture_non_power_of_two
    GL_ARB_texture_rectangle
    GL_ARB_transpose_matrix
    GL_ARB_vertex_buffer_object
    GL_ARB_vertex_program
    GL_ARB_vertex_shader
    GL_ARB_window_pos
    GL_ATI_separate_stencil
    GL_EXT_abgr
    GL_EXT_bgra
    GL_EXT_blend_color
    GL_EXT_blend_equation_separate
    GL_EXT_blend_func_separate
    GL_EXT_blend_minmax
    GL_EXT_blend_subtract
    GL_EXT_clip_volume_hint
    GL_EXT_compiled_vertex_array
    GL_EXT_draw_range_elements
    GL_EXT_fog_coord
    GL_EXT_framebuffer_object
    GL_EXT_multi_draw_arrays
    GL_EXT_packed_pixels
    GL_EXT_rescale_normal
    GL_EXT_secondary_color
    GL_EXT_separate_specular_color
    GL_EXT_shadow_funcs
    GL_EXT_stencil_two_side
    GL_EXT_stencil_wrap
    GL_EXT_texture3D
    GL_EXT_texture_compression_s3tc
    GL_EXT_texture_env_add
    GL_EXT_texture_env_combine
    GL_EXT_texture_filter_anisotropic
    GL_EXT_texture_lod_bias
    GL_EXT_texture_rectangle
    GL_IBM_texture_mirrored_repeat
    GL_NV_blend_square
    GL_NV_texgen_reflection
    GL_SGIS_generate_mipmap
    GL_SGIS_texture_edge_clamp
    GL_SGIS_texture_lod
    GL_WIN_swap_hint

QueryProperties output:

j3d.version = 1.5.2 fcs (build4)
j3d.vendor =
j3d.specification.version = 1.5
j3d.specification.vendor =
j3d.pipeline = NATIVE_OGL
j3d.renderer = OpenGL

native.renderer = Intel Cantiga
native.vendor = Intel
native.version = 2.0.0 - Build 7.15.10.5029
doubleBufferAvailable = true
stereoAvailable = false
sceneAntialiasingAvailable = true
sceneAntialiasingNumPasses = 8
compressedGeometry.majorVersionNumber = 1
compressedGeometry.minorVersionNumber = 0
compressedGeometry.minorMinorVersionNumber = 2
textureUnitStateMax = 8
textureWidthMax = 2048
textureHeightMax = 2048
shadingLanguageCg = false
shadingLanguageGLSL = true
stencilSize = 0
texture3DAvailable = true
texture3DDepthMax = 128
texture3DHeightMax = 128
texture3DWidthMax = 128
textureAnisotropicFilterDegreeMax = 2.0
textureAutoMipMapGenerationAvailable = true
textureBoundaryWidthMax = 1
textureColorTableSize = 0
textureCombineDot3Available = true
textureCombineSubtractAvailable = true
textureCoordSetsMax = 8
textureCubeMapAvailable = true
textureDetailAvailable = false
textureEnvCombineAvailable = true
textureFilter4Available = false
textureImageUnitsCombinedMax = 16
textureImageUnitsMax = 16
textureImageUnitsVertexMax = 16
textureLodOffsetAvailable = false
textureLodRangeAvailable = true
textureNonPowerOfTwoAvailable = true
textureSharpenAvailable = false
vertexAttrsMax = 10
[Message sent by forum member 'weiland' (weiland@...)]

http://forums.java.net/jive/thread.jspa?messageID=369134

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...


Re: Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Check if you are using Java3D 1.5.2 with JOGL 1.1 libraries.

There is a remote possibility that, somehow, your application is using the MS GDI Generic OpenGL Renderer. This one is 1.1.
Try to update your video card drivers.
[Message sent by forum member 'aces' (alessandroborges@...)]

http://forums.java.net/jive/thread.jspa?messageID=369163

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...


Re: Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I've even tried non-vendor drivers (from Intel) - no change.  It's odd that any Java 3d demo program I've tried works fine; my app isn't using SimpleUniverse, but it's hard to see how that should behave very differently.  The problem seems to occur right at the time that the window with the canvas is made visible.

One thing I noticed - when I obtain a graphics config, GLCapabilities seems to have hardwareAccelerated false:

caps GLCapabilities  (id=54)
        accumAlphaBits 0
        accumBlueBits 16
        accumGreenBits 16
        accumRedBits 16
        alphaBits 0
        blueBits 8
        depthBits 32
        doubleBuffered true
        greenBits 8
        hardwareAccelerated false
        numSamples 2
        pbufferFloatingPointBuffers false
        pbufferRenderToTexture false
        pbufferRenderToTextureRectangle false
        redBits 8
        sampleBuffers false
        stencilBits 8
        stereo false

Unfortunately, playing around with this (forcing bit depth to 16; using SimpleUniverse's method for obtaining a context) didn't improve this.

Any other ideas? :)

Bill
[Message sent by forum member 'weiland' (weiland@...)]

http://forums.java.net/jive/thread.jspa?messageID=369359

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...


Re: Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi

Did you check your Java3D version ? By the stack trace line info, you're not using J3D 1.5.2.

Unless you are using Macs, try the OpenGL pipeline instead the JOGL.
Or even the DirectX D3D pipeline, coupled with vertex processing in software mode, as shown below:

java -Dj3d.rend=d3d -Dj3d.d3dVertexProcess=software -Dj3d.debug=true MyApplication

Intel Graphics are tricky. Most of graphics operations are done in CPU,  instead of hw accelerated GPU.
As Intel has +50% of market share, we must pay special attention to it.
[Message sent by forum member 'aces' (alessandroborges@...)]

http://forums.java.net/jive/thread.jspa?messageID=369446

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...


Re: Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> Intel Graphics are tricky : Most of graphics operations are done in CPU,  not in GPU.  As Intel has +50% of market share  ... thus important.
> Try DirectX D3D pipeline, coupled with vertex processing in software mode :
 java -Dj3d.rend=d3d -Dj3d.d3dVertexProcess=software

==> Thank acess for this information. Very usefull for me also because I also have those type of difficult issues. Thank you again.

And oops.. I have 3 sub-questions ;)  :
1) [b]Is "software rendering" also 'successfull' with NON-INTEL-cards :[/b]
    If I force D3D + "software rendering" [  jnlp ==> java -Dj3d.rend=d3d -Dj3d.d3dVertexProcess=software  ] for all PC even those who DO  NOT have intel graphic card, whill they cope with it ?

2) [b]Trying to see in my java code what type of j3d.d3dVertexProcess I have. But it gives always null. Did I do something wrong ?[/b]
Here is my code :
      String j3d_d3dVertexProcess = System.getProperty("j3d.d3dVertexProcess");
      System.out.println("j3d.d3dVertexProcess=" + j3d_d3dVertexProcess);
     Output -->  j3d.d3dVertexProcess=null

3)  [b]Can -Dj3d.d3dVertexProcess be defined INSIDE java code ?[/b]
I prefer to avoid parameters in JNLP file.
Is -Dj3d.d3dVertexProcess ok to be specified/changed inside java code or is it like -xmx  : can only be specified in JNLP file because once the JVM is launch we can't change value...?


Cheers
Thierry
[Message sent by forum member 'tmilard' (t.milard@...)]

http://forums.java.net/jive/thread.jspa?messageID=369459

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...


Re: Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I made sure my app was actually using the release version - this changed nothing.  However, you should note I was running the web start version of QueryProperties - this must be bundled with 1.5.2 fcs, because I was running with _no_ version of java 3d installed in my jre.

I've also tried straight OpenGL which leads to similar, but slightly different errors - I was actually trying Jogl to see if this would shed some light or work better.

Unfortunately, D3D has issues too - I'm making a lot of use of texture COMBINE mode, which seems to behave differently under D3D.  If I can break out a small test program that shows the behavior, I'll post that later this week.

Bill
[Message sent by forum member 'weiland' (weiland@...)]

http://forums.java.net/jive/thread.jspa?messageID=369486

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...


Re: Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi, tmilard

> 1) Is "software rendering" also 'successfull' with NON-INTEL-cards :
No. AMD/ATI and NVidia works better with default, which is  "hardware" mode for those cards.

>2) Trying to see in my java code what type of j3d.d3dVertexProcess I have. But it gives always null. Did I do something wrong ?

When  j3d.d3dVertexProcess is null , the native D3D pipeline assumes the default value, which is choice between "hardware" for high end video cards (HW TnL, Shaders +2.0, etc), "software" for low end video cards. There is also "mixed" mode. for cards in the middle.
If user set a value for  j3d.d3dVertexProcess , it will override above behavior result.
 [b]On Java3D 1.6 development branch, Intel video cards always uses software vertex processing.[/b]
 J3D  1.6 is not available for early access builds JNLP yet.

>3) Can -Dj3d.d3dVertexProcess be defined INSIDE java code ?

Yes, you can do it, but it is very unlikely, as it hurt performance on non-intel video cards, and may raise issues with applet's security manager.

[code]
// put this in your main class
static{
  try{
     System.setProperty("j3d.d3dVertexProcess","mixed");
   }catch(Exception exc){
       exc.printStackTrace();
    }
}
[/code]
[Message sent by forum member 'aces' (alessandroborges@...)]

http://forums.java.net/jive/thread.jspa?messageID=369632

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...


Re: Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks very  much for all the answers Aces.
I do have to say I am a bit sweeting on those scatered (3d card ) and (operating system) issues ....
It really is not  easy for me ;) Not talking with a difficult/primitive debugging with jnlp. Anyway I go forward step by step....


I have one other question.
You said :
> > 1) Is "software rendering" also 'successfull' with
> NON-INTEL-cards :
> No. AMD/ATI and NVidia works better with default,
> which is  "hardware" mode for those cards.
===> O shoots I allready programmed it.... ;(    
Let's imagine I dare put "software rendering" for all windoys machines. Would you say NVidia and/ATI will drop 3d framerate by 20% or 50% or 80% in average. Just your thoughts.
[Otherwise is there a simple) way in jnlp or in java code to know the 3D brand card ?


> [b]On Java3D 1.6 development branch, Intel video
>  cards always uses software vertex processing.[/b]
> J3D  1.6 is not available for early access builds
> JNLP yet.
====> Not a problem : Because I wanted to boost startup performance I know have all java3d jars on my yeb site. [and I find is 30% faster, maybe because I am in europe who knows].  

Thanks and viva java3D.
Thierry


PS: By the way I tested my application on a ultra-PC (those who cost 350€). Surprise: 3D rendering was very ok.
I feel  java3d has a real competitive avantage because it is fast even with old or smal budget machine.
If I can make it also fast with new Mac-Apple or windows7, I open a 10 year old champagne, swear !!
[Message sent by forum member 'tmilard' (t.milard@...)]

http://forums.java.net/jive/thread.jspa?messageID=369645

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...


Re: Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi TMilard

>>Let's imagine I dare put "software rendering" for all windoys machines. Would you say NVidia and/ATI will drop 3d framerate by 20% or 50% or 80% in average ...

Software rendering on NVidia or  ATI may drop frames in 80%. Really bad.


>> By the way I tested my application on a ultra-PC (those who cost 350€). Surprise: 3D rendering was very ok.

I tested J3D applications in a netbook, with Intel Atom processor and onboard Intel GMA950 graphics and it also works just fine on both D3D and OpenGL pipelines, even for large models.
[Message sent by forum member 'aces' (alessandroborges@...)]

http://forums.java.net/jive/thread.jspa?messageID=369712

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...


Re: Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Bill


>>It's odd that any Java 3d demo program I've tried works fine (...)
>> One thing I noticed - when I obtain a graphics config, GLCapabilities seems to have hardwareAccelerated false:
>>(...) Any other ideas?

Seems your application only sees the MS OpenGL dll (OpenGL32.dll) and miss the Intel OpenGL ICD (iglicd32.dll) .
How do you launch your app ?
[Message sent by forum member 'aces' (alessandroborges@...)]

http://forums.java.net/jive/thread.jspa?messageID=369713

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...


Re: Intel graphics - Java 3d misdetecting OpenGL version?

by java3d-interest :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Aces,

I'm running from an eclipse project; the same thing works on other machines.  A few things I've observed - after tinkering with installing Intel drivers, I've gotten the ogl renderer to work (at least mostly - it doesn't crash but a few things look odd).  However, jogl continues to exhibit the same behavior.  Another thing, the iglicd32.dll doesn't appear in system32 with opengl32.dll (which I've seen on other systems), although there are other igfx* and similar looking dlls.  

Bill
[Message sent by forum member 'weiland' (weiland@...)]

http://forums.java.net/jive/thread.jspa?messageID=369827

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@...
For additional commands, e-mail: interest-help@...