X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmesa%2Fmain%2Fdd.h;h=114cbd2b1514b1e77860fb642137aa9840a66ae7;hb=a2dc11a7818c04d8dc0324e8fcba98d60baea529;hp=496a14f8dad328d0dc23c5e40be207de7761acaa;hpb=fc2a66cfcddea34af0e93dd2221ae1fd3fdd9e87;p=mesa.git diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 496a14f8dad..114cbd2b151 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -35,6 +35,7 @@ #include "glheader.h" +struct gl_bitmap_atlas; struct gl_buffer_object; struct gl_context; struct gl_display_list; @@ -48,6 +49,7 @@ struct gl_shader; struct gl_shader_program; struct gl_texture_image; struct gl_texture_object; +struct gl_memory_info; /* GL_ARB_vertex_buffer_object */ /* Modifies GL_MAP_UNSYNCHRONIZED_BIT to allow driver to fail (return @@ -61,7 +63,7 @@ struct gl_texture_object; * want to provoke the driver to throw away the old storage, we will * respect the contents of already referenced data. */ -#define MESA_MAP_NOWAIT_BIT 0x0040 +#define MESA_MAP_NOWAIT_BIT 0x4000 /** @@ -153,6 +155,14 @@ struct dd_function_table { GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ); + + /** + * Called by display list code for optimized glCallLists/glBitmap rendering + * The driver must support texture rectangles of width 1024 or more. + */ + void (*DrawAtlasBitmaps)(struct gl_context *ctx, + const struct gl_bitmap_atlas *atlas, + GLuint count, const GLubyte *ids); /*@}*/ @@ -174,22 +184,24 @@ struct dd_function_table { GLenum srcFormat, GLenum srcType ); /** - * Determine sample counts support for a particular target and format + * Queries different driver parameters for a particular target and format. + * Since ARB_internalformat_query2 introduced several new query parameters + * over ARB_internalformat_query, having one driver hook for each parameter + * is no longer feasible. So this is the generic entry-point for calls + * to glGetInternalFormativ and glGetInternalFormati64v, after Mesa has + * checked errors and default values. * * \param ctx GL context * \param target GL target enum * \param internalFormat GL format enum - * \param samples Buffer to hold the returned sample counts. - * Drivers \b must \b not return more than 16 counts. - * - * \returns - * The number of sample counts actually written to \c samples. If - * \c internaFormat is not renderable, zero is returned. + * \param pname GL enum that specifies the info to query. + * \param params Buffer to hold the result of the query. */ - size_t (*QuerySamplesForFormat)(struct gl_context *ctx, - GLenum target, - GLenum internalFormat, - int samples[16]); + void (*QueryInternalFormat)(struct gl_context *ctx, + GLenum target, + GLenum internalFormat, + GLenum pname, + GLint *params); /** * Called by glTexImage[123]D() and glCopyTexImage[12]D() @@ -296,9 +308,10 @@ struct dd_function_table { * \return GL_TRUE if the image is OK, GL_FALSE if too large */ GLboolean (*TestProxyTexImage)(struct gl_context *ctx, GLenum target, - GLint level, mesa_format format, + GLuint numLevels, GLint level, + mesa_format format, GLuint numSamples, GLint width, GLint height, - GLint depth, GLint border); + GLint depth); /*@}*/ @@ -464,6 +477,11 @@ struct dd_function_table { GLuint id); /** Delete a program */ void (*DeleteProgram)(struct gl_context *ctx, struct gl_program *prog); + /** + * Allocate a program to associate with the new ATI fragment shader (optional) + */ + struct gl_program * (*NewATIfs)(struct gl_context *ctx, + struct ati_fragment_shader *curProg); /** * Notify driver that a program string (and GPU code) has been specified * or modified. Return GL_TRUE or GL_FALSE to indicate if the program is @@ -634,6 +652,11 @@ struct dd_function_table { GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size ); + void (*InvalidateBufferSubData)( struct gl_context *ctx, + struct gl_buffer_object *obj, + GLintptr offset, + GLsizeiptr length ); + /* Returns pointer to the start of the mapped range. * May return NULL if MESA_MAP_NOWAIT_BIT is set in access: */ @@ -721,12 +744,22 @@ struct dd_function_table { void (*EndQuery)(struct gl_context *ctx, struct gl_query_object *q); void (*CheckQuery)(struct gl_context *ctx, struct gl_query_object *q); void (*WaitQuery)(struct gl_context *ctx, struct gl_query_object *q); + /* + * \pname the value requested to be written (GL_QUERY_RESULT, etc) + * \ptype the type of the value requested to be written: + * GL_UNSIGNED_INT, GL_UNSIGNED_INT64_ARB, + * GL_INT, GL_INT64_ARB + */ + void (*StoreQueryResult)(struct gl_context *ctx, struct gl_query_object *q, + struct gl_buffer_object *buf, intptr_t offset, + GLenum pname, GLenum ptype); /*@}*/ /** * \name Performance monitors */ /*@{*/ + void (*InitPerfMonitorGroups)(struct gl_context *ctx); struct gl_perf_monitor_object * (*NewPerfMonitor)(struct gl_context *ctx); void (*DeletePerfMonitor)(struct gl_context *ctx, struct gl_perf_monitor_object *m); @@ -751,11 +784,16 @@ struct dd_function_table { * \name GLSL-related functions (ARB extensions and OpenGL 2.x) */ /*@{*/ - struct gl_shader *(*NewShader)(struct gl_context *ctx, - GLuint name, GLenum type); + struct gl_linked_shader *(*NewShader)(gl_shader_stage stage); void (*UseProgram)(struct gl_context *ctx, struct gl_shader_program *shProg); /*@}*/ + /** + * \name GREMEDY debug/marker functions + */ + /*@{*/ + void (*EmitStringMarker)(struct gl_context *ctx, const GLchar *string, GLsizei len); + /*@}*/ /** * \name Support for multiple T&L engines @@ -927,6 +965,13 @@ struct dd_function_table { void (*DispatchCompute)(struct gl_context *ctx, const GLuint *num_groups); void (*DispatchComputeIndirect)(struct gl_context *ctx, GLintptr indirect); /*@}*/ + + /** + * Query information about memory. Device memory is e.g. VRAM. Staging + * memory is e.g. GART. All sizes are in kilobytes. + */ + void (*QueryMemoryInfo)(struct gl_context *ctx, + struct gl_memory_info *info); };