| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
reused w/ GLCanvas and GLJPanel
|
|
|
|
| |
print(Graphics): Don't force on AWT-EDT -> Deadlock; releasePrint(): perform reshape/display!
|
|
|
|
| |
setupPrint()/releasePrint(), modularize unit test TestTiledPrintingGearsAWT
|
|
|
|
| |
drawing image and show same; Test: Add offscreen print and add borders.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
print(..); Test: Add auto-print w/o UI 72dpi and 300dpi
NOTE: Tile raster is added at print plus lots of debug output - WIP!
- Swap to offscreen at setupPrint()
- Swap GLEventListener (GLEL) and GLContext to fixed size offscreen GLAutoDrawable (GLAD)
- Destroy onscreen drawable/context
- Setup TileRenderer w/ offscreen GLAD
- @ releasePrint() restore onscreen ..
This shall ensure we don't hog the GPU resources when
resizing the AWT component (upscaling).
- Use TileRenderer @ print(..)
The clip-rect will be used as the TileRenderer's image-size
and we perform a whole tile-rendering loop.
This helps to limit resources, see above.
- Test: Add auto-print w/o UI 72dpi and 300dpi
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GLEventListener reshape(..) or manual reshape after beginTile(..) method.
GLEventListener reshape(..) method should be aware of TileRenderer usage
and get the missing tile position and image size from it (-> see Gears example).
TestRandomTiledRendering3GL2AWT demos AWT GLCanvas onscreen
being used for random tile rendering to produce a PNG file.
TestTiledRendering1GL2 is now GLAutoDrawable/GLEventListener agnostic,
hence demos plain GLDrawable tile rendering usage.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
utilization AWTGLPixelBuffer* -> GLPixelBuffer*
GLPixelBufferProvider:
- Default*.getAttributes(): Add componentCount==1 (ALPHA/RED), validate values, throw exception if n/a or not supported
- Add 'allowRowStride' (as for AWTGLPixelBufferProvider)
- Add default for true and false
GLPixelBuffer:
- Add 'allowRowStride' (as for AWTGLPixelBuffer)
- Fix requiresNewBuffer(..):
- aquire minByteSize if passed one is <= 0
- validate minByteSize w/ currentByteSize according to allowRowStride.
AWTGLPixelBuffer: 'allowRowStride' impl. moved to GLPixelBuffer.
|
| |
|
|
|
|
| |
'addNativeJarLibsJoglCfg(..)' to GlueGen, commit c0ead6fa10280f8076704726d59f482b183fd77e
|
|
|
|
| |
-> GLES2 (in profile set)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
reflect semanics - Also fix the exception message (enabled/disabled -> bound/unbound)
Reason of change: Avoid confusion and point to the cause!
API change:
glIsVBOArrayEnabled() -> glIsVBOArrayBound()
glIsVBOElementArrayEnabled() -> glIsVBOElementArrayBound()
glIsPBOPackEnabled() -> glIsPBOPackBound()
glIsPBOUnpackEnabled() -> glIsPBOUnpackBound()
Exception message change:
"must be enabled to call this method" -> "must be bound to call this method"
"must be disabled to call this method" -> "must be unbound to call this method"
|
|
|
|
|
|
| |
Make impl. methods final.
createDummyDrawable(..) is useful for efficient shared context w/o actually rendering to this dummy drawable's framebuffer
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
calling 'PropertyAccess.isPropertyDefined(propName, default)' through Debug class.
Calling 'Debug.isPropertyDefined(propName, default)' may be 'optimized' to
'PropertyAccess.isPropertyDefined(propName, default)', which would skip the modules Debug's class initialization.
Iff that happens, an AccessControlException may happen, due to requesting an insecure property,
since modules own Debug class has not been added it's trusted prefixes from within it's init block yet.
This seems to be a bug of the JVM .. to me, however .. the above description is the only
able to explain the issue at hand.
+++
Fix calls Debug class own static methods, either Debug.initSingleton() or Debug.debug(),
before calling 'isPropertyDefined(propName, default)'.
+++
Also mark Debug class static methods final!
+++
|
|
|
|
|
|
| |
add GLProfile argument, similar to canCreateFBO(..)
In case a compatible non-core profile is requests, canCreateGLPbuffer(..) returns false on OSX.
|
|
|
|
| |
commit 1a20ef3aa1dc9acedd7da0475ee19d4c40b18498)
|
|
|
|
|
|
|
|
|
| |
case proper ES3_compat is given.
isGLES3Compatible() and isGL4ES3() of GLBase _and_ GLContext
includes [ GL >= 4.3, GL >= 3.1 w/ GL_ARB_ES3_compatibility and GLES3 ].
Tested GL 'aliasing' w/ TestGLProfile01NEWT, i.e. isGL*() and getGL*().
|
|
|
|
| |
core profile now - no more OSX exception!
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BuildComposablePipeline: Unify GL identify methods
- Only use base pipelines for Trace/Debug, mock others (ES2, GL2, ..)
The Trace/Debug generated pipelines consume quite some space
and only the actual GL*Impl pipeline is actually required.
To make this work, we have to identify the GL type via it's downstream instance
to implement isGL*() and getGL*() methods, see below!
Adding dummy Trace/Debug type wrapper for GL2, GL3, GL3bc, GL4 and GLES2.
BuildComposablePipeline: Unify GL identify methods
As described above, Trace/Debug shall utilize downstream identification for isGL*() and getGL*() methods.
Custom types, like FixedFuncImpl may choose to be identified by their class inheritance,
by passing command-line argument 'gl_identity_by_assignable_class'.
|
|
|
|
| |
3a0d7703da32e9a5ddf08a334f18588a78038d88
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
getDownstreamGL()/getRootGL(); GLContext.isGL* added proper API doc., isGL3core()/hasNoDefaultVAO() and getDefaultVAO().
- Fix BuildComposablePipeline's isGL*/getGL* (regression of commit 3a0d7703da32e9a5ddf08a334f18588a78038d880)
- GLBase: getDownstreamGL()/getRootGL()
Allows user traversing through pipelined GL instances.
Also added getRootGL() to GLContext.
- GLContext.isGL* added proper API doc.: We test the actual context, not the profile.
- GLContext isGL3core()/hasNoDefaultVAO() and getDefaultVAO()
- Move isGL3code() def. back to pre 3a0d7703da32e9a5ddf08a334f18588a78038d880, i.e. Includes [ GL4, GL3 ] w/o GLES3.
- Added hasNoDefaultVAO() and getDefaultVAO() .. incl. [ GL4, GL3, GLES3 ]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ES3 / GL4.3:
- Update all EGL, GLX, WGL and GL (desktop and mobile) khronos headers to latest version.
- GL3/gl3* -> GL/glcorearb*
- Explicitly preserve ES2_compatibility and ES3_compatibility in header,
most extension grouping was removed in new headers.
- Always load all GLHeader to ensure proper extension association across all profiles.
- Unified method signatures
- Added GL_EXT_map_buffer_range to core
- Using common 'glMapBufferImpl(..)' for all glMapBuffer(..) and glMapBufferRange(..) impl.
- Init necessary fields of GL instances via 'finalizeInit()' called by reflection, if exist.
This allows removing initialization checks, i.e. for all buffer validations.
- BuildStaticGLInfo: Can handle new GL header structure, i.e. one CPP extenstion block incl. define + funcs.
- GLJavaMethodBindingEmitter: Simply print the
- No GL duplication due to new intermediate interfaces, see below
- OO lineare inheritance (Added GL2ES3, GL3ES3 and GL4ES3 intemediates):
GLBase - GL - GL2ES2 - GLES2
GLBase - GL - GL2ES2 - GL2GL3 - [ GL2, GL3 ]
GLBase - GL - GL2ES2 - GL2ES3 - GL3ES3 - [ GL3 ]
GLBase - GL - GL2ES2 - GL2ES3 - GL3ES3 - GL4ES3 - [ GLES3, GL4, .. ]
- Expose 'usable' intermediate interfaces GL3ES3 and GL4ES3 in GLBase/GLProfile/GLContext
via is*() and get*().
- GLContext*:
- isGL3core() is true if [ GL4, GL3, GLES3 ] (added GLES3)
- Added ctxProfile argument to allow handling ES versions:
- getMaxMajor(..), getMaxMinor(..), isValidGLVersion(..) and decrementGLVersion(..)
- mapGLVersions(..) prepared for ES ARB/KHR validation
- EGLContext checks ES3 (via old ctx's GL_VERSION)
- ExtensionAvailabilityCache adds GL_ES_Version_X_Y for ES.
- Prelim tests w/ Mesa 9.1.3
GL Version 3.0 (ES profile, ES2 compat, ES3 compat, FBO, hardware) - OpenGL ES 3.0 Mesa 9.1.3 [GL 3.0.0, vendor 9.1.3 (Mesa 9.1.3)]
- TODO:
- Use KHR_create_context in EGLContext.createContextARBImpl(..)
- More tests (Mobile, ..)
+++
Misc:
- GLContext*:
- Complete glAllocateMemoryNV w/ glFreeMemoryNV.
|
|
|
|
|
|
| |
i.e. allowing 4.3 and 4.4 for GL version validation.
4.4 b/c it may come up soon.
|
|
|
|
|
|
|
|
|
| |
- Quaternion.isEmpty()
- Texture.dispose(GL)
- GLContext.getGLVersionMajor() / ..Minor()
- GLContextImpl.bindPbufferToTexture() / releasePbufferFromTexture()
- MouseEvent.getWheelRotation()
-
|
|
|
|
|
|
|
| |
entry to set/get texture unit (default 0).
Allowing a user to set a specific texture-unit and to query the used texture-unit,
allows one to avoid a collision w/ own texture programming .. i.e. removes the burden to setup all params etc.
|
|
|
|
| |
names, e.g. Version31 -> Version310. ; Trim GLVersionNumber string.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NativeWindowFactory.shutdownHook, the latter handles customShutdownHooks for NativeWindow, JOGL and NEWT.
Unifying our shutdown mechanism is required to provide a controlled shutdown sequence.
NativeWindowFactory is chosen to be the new central entry point, since it is the lowest denominator (common module).
- Move GLDrawableFactory.shutdownHook -> NativeWindowFactory.shutdownHook
Reverse the shutdown dependency for clarity and availability to all modules,
i.e. NEWT may not know about JOGL.
Remove the 'gamma' shutdown hook,
instead simply call GLDrawableFactoryImpl.resetDisplayGamma() before destroy.
NativeWindowFactory.shutdownHook handles customShutdownHooks for NativeWindow, JOGL and NEWT
- Modules can register their shutdown runnable at head or tail of list.
- Allows controlled shutdown across all modules.
|
|
|
|
| |
'es' suffix.
|
|
|
|
|
|
|
|
|
| |
"java.lang.IllegalStateException: zip file closed" on OSX 10.8.3 and Java 1.7.0_17
OS version: Mac OS X 10.8.3
Java version: 1.7.0_17
Catch any occuring exception at GLDrawable shutdown, report them briefly and verbose w/ DEBUG enabled.
|
|
|
|
| |
to take out the commented out 'final', but to enable the qualifier. Duh! Thank's to Harvey (again) for catching my odd work!
|
| |
|
|
|
|
|
|
| |
AbstractGraphicsDevice.getUniqueID() and GLContext.getDeviceVersionAvailableKey()
.. both value classes unique, long lived and rare.
|
|
|
|
| |
potentially continue matching if having a pattern-match (don't loop for-ever).
|
|
|
|
| |
properly; GLJPanel: Rely on GLPixelBuffer.requiresNewBuffer(..) for each frame, don't use local pixelBufferCheckSize (buggy w/ singleton)
|
|
|
|
| |
Spec [1.30 - 1.40].
|
|
|
|
| |
SingletonGLPixelBufferProvider, if provided - releasing prev. smaller GLPixelBuffer after resize.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GLPixelBuffer/.. and enhance usage; GLJPanel: Use GLPixelBuffer* API and SingleAWTGLPixelBufferProvider if possible.
Refactor: TextureData's PixelAttributes/PixelBufferProvider -> GLPixelBuffer/.. and enhance usage
- GLPixelBuffer, GLPixelAttributes and GLPixelBufferProvider have potential for wider audience,
hence extract them to package 'com.jogamp.opengl.util'.
- Using GLPixelBuffer, shall attempt to use pack/unpack row-stride, i.e.
GL2GL3.GL_PACK_ROW_LENGTH, or GL2GL3.GL_UNPACK_ROW_LENGTH.
See GLReadBufferUtil and GLJPanel
- AWTGLPixelBuffer*: Attribute 'row-stride' allows reusing a bigger buffer than requested.
GLJPanel: Use GLPixelBuffer* API and SingleAWTGLPixelBufferProvider if possible.
- Use GLPixelBuffer API to remove redundancies
- Attempts to use SingleAWTGLPixelBufferProvider to save JVM/CPU heap space
for BuffereImage and IntBbuffer (readBack)
Added unit new test demonstrating multiple overlapping GLJPanels reusing (or not)
a singlton SingleAWTGLPixelBufferProvider.
|
|
|
|
|
|
| |
in their own color.
Note: JComponent will introduce flickering if using opaque rendering mode!
|
|
|
|
|
|
| |
PixelBufferProvider: Add 'dispose()' to interface.
Transition reusing AWT specific PixelBufferProvider to allow a later user provided PixelBufferProvider.
|
|
|
|
| |
GLSL version if GLSL is n/a
|
|
|
|
| |
getDefaultPixelDataFormat(), complementing getDefaultPixelDataType()
|
|
|
|
| |
VersionNumber instead of null, it's get*string returns a zero length string instead of null.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
WindowsWGLDrawableFactory Quirks to GLRendererQuirks (NeedCurrCtx4ARBPixFmtQueries, NeedCurrCtx4ARBCreateContext); Bug 706: Confine NeedCurrCtx4ARBCreateContext to [Windows, ATI, driver < 12.102.3); Avoid possible NPE @ GLContext.getGLVendorVersionNumber()
- Simplify GLDrawableFactory's SharedResource Query Methods
- Moving common methods to GLDrawableFactory/GLDrawableFactoryImpl
while reusing common methods to SharedResourceRunner.Resource.
- All factories SharedResources impl. SharedResourceRunner.Resource.
- Move WindowsWGLDrawableFactory Quirks to GLRendererQuirks (NeedCurrCtx4ARBPixFmtQueries, NeedCurrCtx4ARBCreateContext)
- For better maintenance, move the mentioned quirks from the windows factory to our common place,
being detected within GLContextImpl after each context creation.
- Bug 706: Confine NeedCurrCtx4ARBCreateContext to [Windows, ATI, driver < 12.102.3)
- Before we added this quirk if [Windows, ATI],
however, we have hopes that the new drivers will suffice for all
as tested successful on my test machine (AMD Radeon HD 6300M Series, amd_catalyst_13.5_mobility_beta2).
- Avoid possible NPE @ GLContext.getGLVendorVersionNumber()
- GLContext.getGLVendorVersionNumber() never returns 'null' but a zero version instance instead!
- Add API doc.
- Use mixed case names in GLContextImpl.setRendererQuirks(..).
|
|
|
|
| |
for null against a temp variable to narrow races
|
|
|
|
| |
Signed-off-by: Harvey Harrison <[email protected]>
|
|
|
|
| |
DisposeGLEventListenerAction.run() ; Make 'backend' volatile due to possible multi-threading access.
|
| |
|