AnsweredAssumed Answered

About some new AMD OpenGL extensions..

Question asked by oscarbarenys1 on Apr 26, 2012
Latest reply on Apr 27, 2012 by gsellers

Well I see catalyst 12.4 introduces GL_AMD_transform_feedback4 extension..

Some info would be good.. seaching I have found in glxati.h  some new extensions we there is no spec published also don't know what GPU generation are dedicated too.. see below..

Seeing Nvidia new binary I see GL_NV_gpu_work_creation and GL_NV_state_object and some patents related to it seems new HPC Kepler will support enqueing new work from GPU shaders all without host intervention and also saving state in objects so this could be referenced by new work created as new state enviroment attached to new work created..

I also see new ADFS summit session on new OpenGL extensions for Southern Islands hope you have some new additional extensions to what I have found in glxati.h and equivalent functionality to new Kepler (i.e. work creation inside GPU)..

 

In glxati.h I see (in fact shipping since fglrx  november 2011 at least):

AMD_bus_addressable_memory

AMD_array_buffer

AMD_compute_shader

AMD_transform_feedback4

GLX_AMD_display_post_processing

 

AMD_transform_feedback4

#define GL_STREAM_RASTERIZATION_AMD                       0x9380

// end AMD_transform_feedback4

 

GLX_AMD_display_post_processing

extern GLXContext glXGetPostProcessContextAMD(Display *dpy);

extern GLXDrawable glXGetPostProcessDrawableAMD(Display *dpy);

extern unsigned int glXEnablePostProcessAMD(GLboolean enable);

extern unsigned int glXSetDesktopSurfaceSizeAMD(unsigned int width, unsigned int height, unsigned int defaultPresentTexture );

extern unsigned int glXPresentDesktopAMD(unsigned int presentTexture, unsigned int displayIndex, const unsigned int *attrib_list );

 

/*AMD_compute_shader*/

#define GL_COMPUTE_SHADER_AMD                             0x6969

 

 

typedef GLvoid (APIENTRY *PFNGLDISPATCHCOMPUTEAMDPROC)(GLuint program,

                                                       GLuint workdim,

                                                       const GLuint* global_work_size,

                                                       const GLuint* local_work_size);

// end AMD_compute_shader

 

 

 

/* AMD_array_buffer */

typedef GLint  (APIENTRY * PFNGLGETBUFFERARRAYINDEXAMDPROC)(GLuint program, const GLchar * name);

typedef GLvoid (APIENTRY * PFNGLARRAYBUFFERBINDINGAMDPROC)(GLuint program, GLuint arrayBufferIndex, GLuint arrayBufferBinding);

// END AMD_array_buffer

 

 

#define AMD_bus_addressable_memory

 

 

#define GL_BUS_ADDRESSABLE_MEMORY_AMD       0x9168

#define GL_EXTERNAL_PHYSICAL_MEMORY_AMD     0x9169

 

 

typedef GLvoid (APIENTRY * PFNGLWAITMARKERAMDPROC)  (GLuint buffer, GLuint marker);

typedef GLvoid (APIENTRY * PFNGLWRITEMARKERAMDPROC) (GLuint buffer, GLuint marker, GLuint64 offset);

typedef GLvoid (APIENTRY * PFNGLMAKEBUFFERSRESIDENTAMDPROC) (GLsizei count, GLuint* buffers, GLuint64* baddrs, GLuint64* maddrs);

typedef GLvoid (APIENTRY * PFNGLBUFFERBUSADDRESSAMDPROC)    (GLenum target, GLsizeiptr size, GLuint64 baddrs, GLuint64 maddrs);

Outcomes