GLboolean CubeMapSeamless; /**< GL_AMD_seamless_cubemap_per_texture */
/** GL_ARB_bindless_texture */
- struct util_dynarray Handles;
bool HandleAllocated;
+ struct util_dynarray Handles;
};
struct gl_sampler_object Sampler;
GLenum DepthMode; /**< GL_ARB_depth_texture */
- bool StencilSampling; /**< Should we sample stencil instead of depth? */
GLfloat Priority; /**< in [0,1] */
GLint BaseLevel; /**< min mipmap level, OpenGL 1.2 */
GLboolean Immutable; /**< GL_ARB_texture_storage */
GLboolean _IsFloat; /**< GL_OES_float_texture */
GLboolean _IsHalfFloat; /**< GL_OES_half_float_texture */
+ bool StencilSampling; /**< Should we sample stencil instead of depth? */
+ bool HandleAllocated; /**< GL_ARB_bindless_texture */
GLuint MinLevel; /**< GL_ARB_texture_view */
GLuint MinLayer; /**< GL_ARB_texture_view */
GLuint NumLevels; /**< GL_ARB_texture_view */
GLuint NumLayers; /**< GL_ARB_texture_view */
+ /** GL_EXT_memory_object */
+ GLenum TextureTiling;
+
/** Actual texture images, indexed by [cube face] and [mipmap level] */
struct gl_texture_image *Image[MAX_FACES][MAX_TEXTURE_LEVELS];
/** GL_ARB_bindless_texture */
struct util_dynarray SamplerHandles;
struct util_dynarray ImageHandles;
- bool HandleAllocated;
};
/** Texture unit (set by glUniform1()). */
GLubyte unit;
- /** Texture Target (TEXTURE_1D/2D/3D/etc_INDEX). */
- gl_texture_index target;
-
/** Whether this bindless sampler is bound to a unit. */
GLboolean bound;
+ /** Texture Target (TEXTURE_1D/2D/3D/etc_INDEX). */
+ gl_texture_index target;
+
/** Pointer to the base of the data. */
GLvoid *data;
};
/** Image unit (set by glUniform1()). */
GLubyte unit;
- /** Access qualifier (GL_READ_WRITE, GL_READ_ONLY, GL_WRITE_ONLY) */
- GLenum access;
-
/** Whether this bindless image is bound to a unit. */
GLboolean bound;
+ /** Access qualifier (GL_READ_WRITE, GL_READ_ONLY, GL_WRITE_ONLY) */
+ GLenum access;
+
/** Pointer to the base of the data. */
GLvoid *data;
};
GLboolean Enabled; /**< User-set GL_VERTEX_PROGRAM_ARB/NV flag */
GLboolean PointSizeEnabled; /**< GL_VERTEX_PROGRAM_POINT_SIZE_ARB/NV */
GLboolean TwoSideEnabled; /**< GL_VERTEX_PROGRAM_TWO_SIDE_ARB/NV */
+ /** Should fixed-function T&L be implemented with a vertex prog? */
+ GLboolean _MaintainTnlProgram;
+
struct gl_program *Current; /**< User-bound vertex program */
/** Currently enabled and valid vertex program (including internal
GLfloat Parameters[MAX_PROGRAM_ENV_PARAMS][4]; /**< Env params */
- /** Should fixed-function T&L be implemented with a vertex prog? */
- GLboolean _MaintainTnlProgram;
-
/** Program to emulate fixed-function T&L (see above) */
struct gl_program *_TnlProgram;
struct gl_fragment_program_state
{
GLboolean Enabled; /**< User-set fragment program enable flag */
+ /** Should fixed-function texturing be implemented with a fragment prog? */
+ GLboolean _MaintainTexEnvProgram;
+
struct gl_program *Current; /**< User-bound fragment program */
/** Currently enabled and valid fragment program (including internal
GLfloat Parameters[MAX_PROGRAM_ENV_PARAMS][4]; /**< Env params */
- /** Should fixed-function texturing be implemented with a fragment prog? */
- GLboolean _MaintainTexEnvProgram;
-
/** Program to emulate fixed-function texture env/combine (see above) */
struct gl_program *_TexEnvProgram;
GLchar *Label; /**< GL_KHR_debug */
unsigned char sha1[20]; /**< SHA1 hash of pre-processed source */
GLboolean DeletePending;
- enum gl_compile_status CompileStatus;
bool IsES; /**< True if this shader uses GLSL ES */
+ enum gl_compile_status CompileStatus;
+
#ifdef DEBUG
unsigned SourceChecksum; /**< for debug/logging purposes */
#endif
unsigned Version; /**< GLSL version used for linking */
- struct exec_list *ir;
- struct glsl_symbol_table *symbols;
-
/**
* A bitmask of gl_advanced_blend_mode values
*/
GLbitfield BlendSupport;
+ struct exec_list *ir;
+ struct glsl_symbol_table *symbols;
+
/**
* Whether early fragment tests are enabled as defined by
* ARB_shader_image_load_store.
};
-enum gl_uniform_block_packing
-{
- ubo_packing_std140,
- ubo_packing_shared,
- ubo_packing_packed,
- ubo_packing_std430
-};
-
-
struct gl_uniform_block
{
/** Declared name of the uniform block */
* This isn't accessible through the API, but it is used while
* cross-validating uniform blocks.
*/
- enum gl_uniform_block_packing _Packing;
+ enum glsl_interface_packing _Packing;
GLboolean _RowMajor;
};
struct gl_uniform_storage *UniformStorage;
unsigned NumUniformBlocks;
- struct gl_uniform_block *UniformBlocks;
-
unsigned NumShaderStorageBlocks;
+
+ struct gl_uniform_block *UniformBlocks;
struct gl_uniform_block *ShaderStorageBlocks;
struct gl_active_atomic_buffer *AtomicBuffers;
* lands we should switch to using the cache_fallback support.
*/
bool skip_cache;
+ GLboolean Validated;
/** List of all active resources after linking. */
struct gl_program_resource *ProgramResourceList;
unsigned NumProgramResourceList;
enum gl_link_status LinkStatus; /**< GL_LINK_STATUS */
- GLboolean Validated;
GLchar *InfoLog;
unsigned Version; /**< GLSL version used for linking */
/** Sync object state */
struct gl_sync_object
{
- GLenum Type; /**< GL_SYNC_FENCE */
GLuint Name; /**< Fence name */
- GLchar *Label; /**< GL_KHR_debug */
GLint RefCount; /**< Reference count */
+ GLchar *Label; /**< GL_KHR_debug */
GLboolean DeletePending; /**< Object was deleted while there were still
* live references (e.g., sync not yet finished)
*/
* Once this field becomes true, it is never reset to false.
*/
bool ShareGroupReset;
+
+ /** EXT_external_objects */
+ struct _mesa_HashTable *MemoryObjects;
+
};
* called without a rb->TexImage.
*/
GLboolean NeedsFinishRenderTexture;
- GLubyte NumSamples;
+ GLubyte NumSamples; /**< zero means not multisampled */
GLenum InternalFormat; /**< The user-specified format */
GLenum _BaseFormat; /**< Either GL_RGB, GL_RGBA, GL_DEPTH_COMPONENT or
GL_STENCIL_INDEX. */
*/
GLboolean DisableVaryingPacking;
+ /**
+ * UBOs and SSBOs can be packed tightly by the OpenGL implementation when
+ * layout is set as shared (the default) or packed. However most Mesa drivers
+ * just use STD140 for these layouts. This flag allows drivers to use STD430
+ * for packed and shared layouts which allows arrays to be packed more
+ * tightly.
+ */
+ bool UseSTD430AsDefaultPacking;
+
/**
* Should meaningful names be generated for compiler temporary variables?
*
GLboolean ARB_occlusion_query2;
GLboolean ARB_pipeline_statistics_query;
GLboolean ARB_point_sprite;
+ GLboolean ARB_polygon_offset_clamp;
GLboolean ARB_post_depth_coverage;
GLboolean ARB_query_buffer_object;
GLboolean ARB_robust_buffer_access_behavior;
GLboolean ARB_texture_env_combine;
GLboolean ARB_texture_env_crossbar;
GLboolean ARB_texture_env_dot3;
+ GLboolean ARB_texture_filter_anisotropic;
GLboolean ARB_texture_float;
GLboolean ARB_texture_gather;
GLboolean ARB_texture_mirror_clamp_to_edge;
GLboolean EXT_framebuffer_sRGB;
GLboolean EXT_gpu_program_parameters;
GLboolean EXT_gpu_shader4;
+ GLboolean EXT_memory_object;
+ GLboolean EXT_memory_object_fd;
GLboolean EXT_packed_float;
GLboolean EXT_pixel_buffer_object;
GLboolean EXT_point_parameters;
- GLboolean EXT_polygon_offset_clamp;
GLboolean EXT_provoking_vertex;
GLboolean EXT_shader_integer_mix;
GLboolean EXT_shader_samples_identical;
struct gl_display_list
{
GLuint Name;
- GLchar *Label; /**< GL_KHR_debug */
GLbitfield Flags; /**< DLIST_x flags */
+ GLchar *Label; /**< GL_KHR_debug */
/** The dlist commands are in a linked list of nodes */
union gl_dlist_node *Head;
};
*/
struct gl_dlist_state
{
- GLuint CallDepth; /**< Current recursion calling depth */
-
struct gl_display_list *CurrentList; /**< List currently being compiled */
union gl_dlist_node *CurrentBlock; /**< Pointer to current block of nodes */
GLuint CurrentPos; /**< Index into current block of nodes */
+ GLuint CallDepth; /**< Current recursion calling depth */
GLvertexformat ListVtxfmt;
/** gl_context::Transform::DepthClamp */
uint64_t NewDepthClamp;
+ /** gl_context::Line */
+ uint64_t NewLineState;
+
/** gl_context::Polygon */
uint64_t NewPolygonState;
+ /** gl_context::PolygonStipple */
+ uint64_t NewPolygonStipple;
+
/** gl_context::ViewportArray */
uint64_t NewViewport;
+
+ /** Shader constants (uniforms, program parameters, state constants) */
+ uint64_t NewShaderConstants[MESA_SHADER_STAGES];
};
struct gl_uniform_buffer_binding
GLuint64 handle;
};
+struct gl_memory_object
+{
+ GLuint Name; /**< hash table ID/name */
+ GLboolean Immutable; /**< denotes mutability state of parameters */
+ GLboolean Dedicated; /**< import memory from a dedicated allocation */
+};
+
/**
* Mesa rendering context.
*
GLboolean RasterDiscard; /**< GL_RASTERIZER_DISCARD */
GLboolean IntelConservativeRasterization; /**< GL_INTEL_CONSERVATIVE_RASTERIZATION */
+ /** Does glVertexAttrib(0) alias glVertex()? */
+ bool _AttribZeroAliasesVertex;
+
/**
* \name Hooks for module contexts.
*