| Name | |
| ARB_sampler_objects | |
| Name Strings | |
| GL_ARB_sampler_objects | |
| Contact | |
| Graham Sellers, AMD (graham.sellers 'at' amd.com) | |
| Contributors | |
| Graham Sellers, AMD | |
| Jaakko Konttinen, AMD | |
| Jeff Bolz, NVIDIA | |
| Daniel Koch, TransGaming | |
| Bruce Merry, ARM | |
| Notice | |
| Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at | |
| http://www.khronos.org/registry/speccopyright.html | |
| Specification Update Policy | |
| Khronos-approved extension specifications are updated in response to | |
| issues and bugs prioritized by the Khronos OpenGL Working Group. For | |
| extensions which have been promoted to a core Specification, fixes will | |
| first appear in the latest version of that core Specification, and will | |
| eventually be backported to the extension document. This policy is | |
| described in more detail at | |
| https://www.khronos.org/registry/OpenGL/docs/update_policy.php | |
| Status | |
| Complete. Approved by the ARB at the 2010/01/22 F2F meeting. | |
| Approved by the Khronos Board of Promoters on March 10, 2010. | |
| Version | |
| Version 13, November 12, 2014 | |
| Number | |
| ARB Extension #81 | |
| Dependencies | |
| This extension is written against the OpenGL 3.2 (Compatibility | |
| Profile) specification. | |
| This extension interacts with EXT_texture_filter_anisotropic. | |
| OpenGL 1.0 is required. | |
| Overview | |
| In unextended OpenGL textures are considered to be sets of image | |
| data (mip-chains, arrays, cube-map face sets, etc.) and sampling | |
| state (sampling mode, mip-mapping state, coordinate wrapping and | |
| clamping rules, etc.) combined into a single object. It is typical | |
| for an application to use many textures with a limited set of | |
| sampling states that are the same between them. In order to use | |
| textures in this way, an application must generate and configure | |
| many texture names, adding overhead both to applications and to | |
| implementations. Furthermore, should an application wish to sample | |
| from a texture in more than one way (with and without mip-mapping, | |
| for example) it must either modify the state of the texture or | |
| create two textures, each with a copy of the same image data. This | |
| can introduce runtime and memory costs to the application. | |
| This extension separates sampler state from texture image data. A | |
| new object type is introduced, the sampler (representing generic | |
| sampling parameters). The new sampler objects are represented by a | |
| new named type encapsulating the sampling parameters of a | |
| traditional texture object. Sampler objects may be bound to texture | |
| units to supplant the bound texture's sampling state. A single | |
| sampler may be bound to more than one texture unit simultaneously, | |
| allowing different textures to be accessed with a single set of | |
| shared sampling parameters. Also, by binding different sampler | |
| objects to texture units to which the same texture has been bound, | |
| the same texture image data may be sampled with different sampling | |
| parameters. | |
| IP Status | |
| No known IP claims. | |
| New Procedures and Functions | |
| void GenSamplers(sizei count, uint *samplers); | |
| void DeleteSamplers(sizei count, const uint * samplers); | |
| boolean IsSampler(uint sampler); | |
| void BindSampler(uint unit, uint sampler); | |
| void SamplerParameteri(uint sampler, enum pname, int param); | |
| void SamplerParameterf(uint sampler, enum pname, float param); | |
| void SamplerParameteriv(uint sampler, enum pname, const int *params); | |
| void SamplerParameterfv(uint sampler, enum pname, const float *params); | |
| void SamplerParameterIiv(uint sampler, enum pname, const int *params); | |
| void SamplerParameterIuiv(uint sampler, enum pname, const uint *params); | |
| void GetSamplerParameteriv(uint sampler, enum pname, int *params); | |
| void GetSamplerParameterfv(uint sampler, enum pname, float *params); | |
| void GetSamplerParameterIiv(uint sampler, enum pname, int *params); | |
| void GetSamplerParameterIuiv(uint sampler, enum pname, uint *params); | |
| New Tokens | |
| Accepted by the <value> parameter of the GetBooleanv, GetIntegerv, | |
| GetInteger64v, GetFloatv and GetDoublev functions: | |
| SAMPLER_BINDING 0x8919 | |
| Additions to Chapter 2 of the OpenGL 3.2 Specification (Compatibility Profile) (OpenGL Operation) | |
| None. | |
| Additions to Chapter 3 of the OpenGL 3.2 Specification (Compatibility Profile) (Rasterization) | |
| Additions to Section 3.8.12 Texture Completeness | |
| Add subheading "Effects of Sampler Objects on Texture Completeness" | |
| If a sampler object and a texture object are simultaneously bound to | |
| the same texture unit, then the sampling state for that unit is | |
| taken from the sampler object (see section 3.9.2, "Sampler | |
| Objects"). This can have an effect on the effective completeness of | |
| the texture. In particular, if the texture is not mipmap complete | |
| and the sampler object specifies a MIN_FILTER requiring mipmaps, the | |
| texture will be considered incomplete for the purposes of that | |
| texture unit. However, if the sampler object does not require | |
| mipmaps, the texture object will be considered complete. This means | |
| that a texture can be considered both complete and incomplete | |
| simultaneously if it is bound to two or more texture units along | |
| with sampler objects with different states. | |
| Additions to Section 3.9 Texturing | |
| Modify the prologue to Section 3.9 as follows: | |
| Renumber Section 3.9.14 "Texture Objects" to Section 3.9.1. renumber | |
| subsequent sections | |
| Replace Section 3.9.1 "Texture Objects" | |
| 3.9.1 Texture Objects | |
| --------------------- | |
| Textures in GL are represented by named objects. The name space for | |
| texture objects is the unsigned integers, with zero reserved by the | |
| GL to represent the default texture object. The default texture | |
| object is bound to each of the TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, | |
| TEXTURE_1D_ARRAY, TEXTURE_2D_ARRAY, TEXTURE_RECTANGLE, | |
| TEXTURE_BUFFER, TEXTURE_CUBE_MAP, TEXTURE_2D_MULTISAMPLE, and | |
| TEXTURE_2D_MULTISAMPLE_ARRAY targets during context initialization. | |
| A new texture object is created by binding an unused name to one of | |
| these texture targets. The command | |
| void GenTextures( sizei n, uint *textures ); | |
| returns <n> previously unused texture names in <textures>. These | |
| names are marked as used, for the purposes of GenTextures only, but | |
| they acquire texture state and a dimensionality only when they are | |
| first bound, just as if they were unused. The binding is effected by | |
| calling | |
| void BindTexture( enum target, uint texture ); | |
| with <target> set to the desired texture target and <texture> set to | |
| the unused name. The resulting texture object is a new state vector, | |
| comprising all the state and with the same initial values listed in | |
| section 3.9.13. The new texture object bound to <target> is, and | |
| remains a texture of the dimensionality and type specified by | |
| <target> until it is deleted. | |
| BindTexture may also be used to bind an existing texture object to | |
| any of these targets. The error INVALID_OPERATION is generated if an | |
| attempt is made to bind a texture object of different dimensionality | |
| than the specified <target>. If the bind is successful no change is | |
| made to the state of the bound texture object, and any previous | |
| binding to <target> is broken. | |
| ** This error applies only to 3.2 core profile / 3.1 w/o ARB_compatibility / | |
| ** 3.0 deprecated contexts. | |
| BindTexture fails and an INVALID_OPERATION error is generated if | |
| <texture> is not zero or a name returned from a previous call to | |
| GenTextures, or if such a name has since been deleted. While a | |
| texture object is bound, GL operations on the target to which it is | |
| bound affect the bound object, and queries of the target to which it | |
| is bound return state from the bound object. If texture mapping of | |
| the dimensionality of the target to which a texture object is bound | |
| is enabled, the state of the bound texture object directs the | |
| texturing operation. | |
| Texture objects are deleted by calling | |
| void DeleteTextures( sizei n, uint *textures ); | |
| <textures> contains <n> names of texture objects to be deleted. | |
| After a texture object is deleted, it has no contents or | |
| dimensionality, and its name is again unused. If a texture that is | |
| currently bound to any of the target bindings of BindTexture is | |
| deleted, it is as though BindTexture had been executed with the same | |
| target and texture zero. Additionally, special care must be taken | |
| when deleting a texture if any of the images of the texture are | |
| attached to a framebuffer object. See section 4.4.2 for details. | |
| Unused names in <textures> are silently ignored, as is the name zero. | |
| The texture object name space, including the initial one-, two-, and | |
| three- dimensional, one- and two-dimensional array, rectangular, | |
| buffer, cube map, two-dimensional multisample, and two-dimensional | |
| multisample array texture objects, is shared among all texture | |
| units. A texture object may be bound to more than one texture unit | |
| simultaneously. After a texture object is bound, any GL operations | |
| on that target object affect any other texture units to which the | |
| same texture object is bound. | |
| Texture binding is affected by the setting of the state | |
| ACTIVE_TEXTURE. If a texture object is deleted, it as if all texture | |
| units which are bound to that texture object are rebound to texture | |
| object zero. | |
| Insert new Section 3.9.2 "Sampler Objects", renumber subsequent | |
| sections. | |
| 3.9.2 Sampler Objects | |
| --------------------- | |
| The state necessary for texturing can be divided into two categories | |
| as described in Section 3.9.13. An OpenGL texture object represents | |
| both sets. The first set represents dimensionality and other image | |
| parameters, and the second set represents sampling state. | |
| Additionally, a sampler object may be created to encapsulate only | |
| the second set, or the sampling state, of a texture object. | |
| A new sampler object is created by binding an unused name to a | |
| texture unit. The command | |
| void GenSamplers( sizei count, uint *samplers ); | |
| returns <count> previously unused sampler object names in | |
| <samplers>. The name zero is reserved by the GL to represent no | |
| sampler being bound to a sampler unit. The names are marked as used, | |
| for the purposes of GenSamplers only, but they acquire state only | |
| when they are first used as a parameter to BindSampler, | |
| SamplerParameter*, GetSamplerParameter*, or IsSampler. When a | |
| sampler object is first used in one of these functions, the | |
| resulting sampler object is initialized with a new state vector, | |
| comprising all the state and with the same initial values listed in | |
| table 6.23. | |
| When a sampler object is bound to a texture unit, its state | |
| supersedes that of the texture object bound to that texture unit. If | |
| the sampler name zero is bound to a texture unit, the currently | |
| bound texture's sampler state becomes active. A single sampler | |
| object may be bound to multiple texture units simultaneously. | |
| A sampler binding is effected by calling | |
| void BindSampler( uint unit, uint sampler ); | |
| with <unit> set to the texture unit to which to bind the sampler and | |
| <sampler> set to the name of a sampler object returned from a | |
| previous call to GenSampler. | |
| <unit> must be between zero and the value of | |
| MAX_TEXTURE_IMAGE_UNITS-1. <sampler> is the name of a sampler object | |
| that has previously been reserved by a call to GenSamplers. | |
| If the bind is successful no change is made to the state of the | |
| bound sampler object, and any previous binding to <unit> is broken. | |
| BindSampler fails and an INVALID_OPERATION error is generated if | |
| <sampler> is not zero or a name returned from a previous call to | |
| GenSamplers, or if such a name has since been deleted with | |
| DeleteSamplers. An INVALID_VALUE error is generated if <unit> is | |
| greater than or equal to the value of | |
| MAX_COMBINED_TEXTURE_IMAGE_UNITS. | |
| If state is present in a sampler object bound to a texture unit that | |
| would have been rejected by a call to TexParameter for the texture | |
| bound to that unit, the behavior of the implementation is as if the | |
| texture were incomplete. For example, if TEXTURE_WRAP_S, | |
| TEXTURE_WRAP_T or TEXTURE_WRAP_R is set to REPEAT or MIRRORED_REPEAT | |
| on the sampler object bound to a texture unit and the texture bound | |
| to that unit is a TEXTURE_RECTANGLE, the texture will be considered | |
| incomplete. | |
| The currently bound sampler may be queried by calling GetIntegerv | |
| with <pname> set to SAMPLER_BINDING. When a sampler object is | |
| unbound from the texture unit (by binding another sampler object, or | |
| the sampler object named zero, to that texture unit) the modified | |
| state is again replaced with the sampler state associated with the | |
| texture object bound to that texture unit. | |
| The parameters represented by a sampler object are a subset of those | |
| described in Section 3.9.6 "Texture Parameters". Each parameter of a | |
| sampler object is set by calling | |
| void SamplerParameter{if}{v}( uint sampler, enum pname, T param ); | |
| void SamplerParameterI{u ui}v( uint sampler, enum pname, T *params ); | |
| <sampler> is the name of a sampler object previously reserved by a | |
| call to GenSamplers. <pname> is the name of a parameter to modify | |
| and <param> is the new value of that parameter. An INVALID_OPERATION | |
| error is generated if <sampler> is not the name of a sampler object | |
| previously returned from a call to GenSamplers. The values accepted | |
| in the <pname> parameter are TEXTURE_WRAP_S, TEXTURE_WRAP_T, | |
| TEXTURE_WRAP_R, TEXTURE_MIN_FILTER, TEXTURE_MAG_FILTER, | |
| TEXTURE_BORDER_COLOR, TEXTURE_MIN_LOD, TEXTURE_MAX_LOD, | |
| TEXTURE_LOD_BIAS, TEXTURE_COMPARE_MODE, TEXTURE_COMPARE_FUNC and | |
| TEXTURE_MAX_ANISOTROPY_EXT. Texture state listed in table 6.22 but | |
| not listed here and in the sampler state in table 6.23 is not part | |
| of the sampler state, and remains in the texture object. | |
| If the values for TEXTURE_BORDER_COLOR are specified with a call to | |
| SamplerParameterIiv or SamplerParameterIuiv, the values are | |
| unmodified and stored with an internal data type of integer. If | |
| specified with SamplerParameteriv, they are converted to | |
| floating-point using equation 2.2. Otherwise, the values are | |
| unmodified and stored as floating-point. | |
| An INVALID_ENUM error is generated if <pname> is not the name of a | |
| parameter accepted by SamplerParameter*. If the value of <param> is | |
| not an acceptable value for the parameter specified in <pname>, an | |
| error is generated as specified in the description of TexParameter*. | |
| Modifying a parameter of a sampler object affects all texture units | |
| to which that sampler object is bound. Calling TexParameter has no | |
| effect on the sampler object bound to the active texture unit. It | |
| will modify the parameters of the texture object bound to that unit. | |
| Sampler objects are deleted by calling | |
| void DeleteSamplers( sizei count, const uint *samplers ); | |
| <samplers> contains <count> names of sampler objects to be deleted. | |
| After a sampler object is deleted, its name is again unused. If a | |
| sampler object that is currently bound to a sampler unit is deleted, | |
| it is as though BindSampler is called with <unit> set to the unit | |
| the sampler is bound to and <sampler> zero. Unused names in | |
| <samplers> are silently ignored, as is the reserved name zero. | |
| Additions to Chapter 4 of the OpenGL 3.2 Specification (Compatibility Profile) (Per-Fragment Operations and the Framebuffer) | |
| None. | |
| Additions to Chapter 5 of the OpenGL 3.2 Specification (Compatibility Profile) (Special Functions) | |
| Add a new category of commands not usable in display lists | |
| to section 5.4.1: | |
| "Sampler objects: GenSamplers and DeleteSamplers." | |
| Additions to Chapter 6 of the OpenGL 3.2 Specification (Compatibility Profile) (State and State Requests) | |
| Insert new section 6.1.5 "Sampler Queries" following existing | |
| section 6.1.4 and renumber following sections: | |
| 6.1.5 Sampler Queries | |
| The command | |
| boolean IsSampler( uint sampler ); | |
| may be called to determine whether <sampler> is the name of a | |
| sampler object IsSampler will return TRUE if <sampler> is the name | |
| of a sampler object previously returned from a call to GenSamplers | |
| and FALSE otherwise. Zero is not the name of a sampler object. The | |
| current values of the parameters of a sampler object may be queried | |
| by calling | |
| void GetSamplerParameter{if}v( uint sampler, enum pname, T *params ); | |
| void GetSamplerParameterI{i ui}v( uint sampler, enum pname, T *params ); | |
| <sampler> is the name of the sampler object from which to retrieve | |
| parameters. <pname> is the name of the parameter whose value to | |
| retrieve and <params> is the address of an array into which the | |
| current value of the desired parameter will be placed. | |
| GetSamplerParameter* accepts the same values for <pname> as | |
| SamplerParameter*. An INVALID_OPERATION error is generated if | |
| <sampler> is not the name of a sampler object previously returned | |
| from a call to GenSamplers. An INVALID_ENUM error is generated if | |
| <pname> is not the name of a parameter accepted by | |
| GetSamplerParameter*. | |
| Querying value TEXTURE_BORDER_COLOR with GetSamplerParameterIiv or | |
| GetSamplerParameterIuiv returns the border color values as signed | |
| integers or unsigned integers, respectively; otherwise the values | |
| are returned as described in section 6.1.2. If the border color is | |
| queried with a type that does not match the original type with which | |
| it was specified, the result is undefined. | |
| In section 6.1.19, append to the paragraph starting "When PushAttrib | |
| is called with TEXTURE_BIT set...": | |
| "... are restored to their pushed values. The bindings and state for | |
| sampler objects are not pushed or popped." | |
| Additions to Appendix A of the OpenGL 3.2 Specification (Compatibility Profile) (Invariance) | |
| None. | |
| Interactions with EXT_texture_filter_anisotropic | |
| If EXT_texture_filter_anisotropic is not supported, remove all | |
| references to TEXTURE_MAX_ANISOTROPY_EXT. | |
| Additions to the AGL/GLX/WGL Specifications | |
| None. | |
| GLX Protocol | |
| None. | |
| Errors | |
| INVALID_OPERATION is generated by BindSampler if <sampler> is not | |
| zero or a name returned from a previous call to GenSamplers. | |
| INVALID_VALUE is generated by BindSampler if <unit> is greater than | |
| MAX_TEXTURE_IMAGE_UNITS-1. | |
| INVALID_OPERATION is generated by SamplerParameter* and | |
| GetSamplerParameter* if <sampler> is not a name returned from a | |
| previous call to GenSamplers. | |
| New State | |
| Append to Table 6.20, "Textures (state per texture unit and binding point)" | |
| +-----------------------+-----------+-------------------+-----------------+-------------------------+--------+------------+ | |
| | Get Value | Type | Get Command | Initial Value | Description | Sec | Attribute | | |
| +-----------------------+-----------+-------------------+-----------------+-------------------------+--------+------------+ | |
| | SAMPLER_BINDING | 48* x Z+ | GetIntegerv | 0 | Sampler object bound | 3.9.2 | - | | |
| | | | | | to active texture unit | | | | |
| +-----------------------+-----------+-------------------+-----------------+-------------------------+--------+------------+ | |
| Add new Table 6.23, "Textures (state per sampler object)", renumber subsequent tables. | |
| +---------------------------+-----------+----------------------+------------------------+------------------------------+--------+------------+ | |
| | Get Value | Type | Get Command | Initial Value | Description | Sec | Attribute | | |
| +---------------------------+-----------+----------------------+------------------------+------------------------------+--------+------------+ | |
| | TEXTURE_BORDER_COLOR | n x C | GetSamplerParameter | 0,0,0,0 | Border color | 3.9 | - | | |
| | TEXTURE_MIN_FILTER | n x Z6 | GetSamplerParameter | NEAREST_MIPMAP_LINEAR | Minification function | 3.9.9 | - | | |
| | TEXTURE_MAG_FILTER | n x Z2 | GetSamplerParameter | LINEAR | Magnification function | 3.9.10 | - | | |
| | TEXTURE_WRAP_S | n x Z5 | GetSamplerParameter | REPEAT | Texcoord s wrap mode | 3.9.9 | - | | |
| | TEXTURE_WRAP_T | n x Z5 | GetSamplerParameter | REPEAT | Texcoord t wrap mode | 3.9.9 | - | | |
| | TEXTURE_WRAP_R | n x Z5 | GetSamplerParameter | REPEAT | Texcoord r wrap mode | 3.9.9 | - | | |
| | TEXTURE_MIN_LOD | n x R | GetSamplerParameter | -1000 | Minimum level of detail | 3.9 | - | | |
| | TEXTURE_MAX_LOD | n x R | GetSamplerParameter | 1000 | Maximum level of detail | 3.9 | - | | |
| | TEXTURE_LOD_BIAS | n x R | GetSamplerParameter | 0.0 | Texture level of detail | 3.9.9 | - | | |
| | | | | | bias (biastexobj) | | | | |
| | TEXTURE_COMPARE_MODE | n x Z2 | GetSamplerParameter | NONE | Comparison mode | 3.9.16 | - | | |
| | TEXTURE_COMPARE_FUNC | n x Z8 | GetSamplerParameter | LEQUAL | Comparison function | 3.9.16 | - | | |
| | TEXTURE_MAX_ANISOTROPY_EXT| n x R | GetSamplerParameter | 1.0 | Maximum degree of anisotropy | 3.9 | - | | |
| +---------------------------+-----------+----------------------+------------------------+------------------------------+--------+------------+ | |
| New Implementation Dependent State | |
| None. | |
| Issues | |
| 1) Should BindSampler take a <target> parameter? | |
| DISCUSSION: Currently it does not. Binding a sampler to a texture | |
| unit binds it to all targets. Binding a texture to a target of a | |
| texture unit continues to determine the target precedence. | |
| 2) What is the set of state associated with a sampler object? | |
| Specifically, should TEXTURE_BASE_LEVEL and TEXTURE_MAX_LEVEL be | |
| part of the sampler or the texture? | |
| DISCUSSION: TEXTURE_BASE_LEVEL and TEXTURE_MAX_LEVEL are presently | |
| part of the image state (texture) and are thus not included in the | |
| sampler object. TEXTURE_WRAP_S, TEXTURE_WRAP_T, TEXTURE_WRAP_R, | |
| TEXTURE_MIN_FILTER, TEXTURE_MAG_FILTER, TEXTURE_BORDER_COLOR, | |
| TEXTURE_MIN_LOD, TEXTURE_MAX_LOD, TEXTURE_LOD_BIAS, | |
| TEXTURE_COMPARE_MODE, TEXTURE_COMPARE_FUNC are the states included | |
| in the sampler object. | |
| 3) How would one use the same sampler state to access multiple | |
| textures? | |
| DISCUSSION: Generate a sampler object, set its state. Then, bind the | |
| same sampler object to multiple texture units (perhaps with | |
| different textures bound to them) and use those units as usual. | |
| 4) How would one access the same texture with different samplers? | |
| DISCUSSION: Generate a sampler object for each intended set of | |
| sampling parameters and bind them to different texture units. Bind | |
| the same texture to each of those units. That same texture will be | |
| sampled according to the parameters contained in the sampler object | |
| bound to the respective unit. | |
| 5) Does it matter what order samplers and textures are bound to | |
| texture units? | |
| No. As long as a sampler is bound to a texture unit, it acts as the | |
| source of the sampler state for that unit. Textures may be switched | |
| in and out without affecting the sampler state. This includes the | |
| default texture object. | |
| 6) If a sampler object is bound to multiple texture units and its | |
| state is modified, is that state visible to all of those units? | |
| Yes. | |
| 7) Should sampler objects be made visible to the shading language. | |
| This is left for a future extension. Separating samplers and texture | |
| images in the shader allows for a run-time combinatorial explosion | |
| of sampler- texture pairs that would be difficult to count. It is | |
| also very clumsy to specify in a way that interacts cleanly with | |
| prior versions of OpenGL. This may become more feasible to apply | |
| against a future version of OpenGL, but this extension is applicable | |
| to any version of OpenGL. | |
| 8) Can sampler objects be shared between contexts? | |
| Yes. The semantics of sharing a sampler object between contexts is | |
| the same as that of sharing texture objects. | |
| 9) What happens when a sampler object bound to a texture unit has a | |
| parameter that is incompatible with the texture that is bound to | |
| that unit? | |
| The behavior is as if the texture is incomplete. | |
| 10) When are sampler objects created? When do they start to exist? | |
| Sampler objects are created when they are first used by any function | |
| taking the name of a sampler object as a parameter. Their names must | |
| be reserved by a call to GenSamplers. For all intents and purposes, | |
| it is as if they start existing when GenSamplers creates their | |
| names. | |
| Revision History | |
| Rev. Date Author Changes | |
| ---- ---------- --------- ----------------------------------------- | |
| 13 11/12/2014 Jon Leech Fix spelling of TEXTURE_MAX_ANISOTROPY | |
| (public Bug 1263). | |
| 12 07/22/2011 Jon Leech Fix valid <unit> values to be based | |
| on MAX_COMBINED_TEXTURE_IMAGE_UNITS | |
| instead of MAX_TEXTURE_IMAGE_UNITS (bug | |
| 6406). | |
| 11 07/07/2010 Jon Leech Do not allow sampler bindings and sampler | |
| object state to be pushed and popped, by | |
| modifying all new state table entries to | |
| have no attribute group and adding a | |
| clarifying statement in section 6.1.20. | |
| Do not allow GenSamplers and | |
| DeleteSamplers in display lists (bug | |
| 6056). | |
| 10 03/29/2010 pbrown Further fixes in the listed prototypes; | |
| use separate lines for external parsing. | |
| 9 03/27/2010 pbrown Fix an incorrect prototype for BindSampler | |
| in the new functions section (bug 6146). | |
| 8 03/22/2010 Jon Leech Change error for invalid <sampler> names | |
| passed to *SamplerParameter* from | |
| INVALID_VALUE to INVALID_OPERATION for | |
| consistency (bug 6026). Expand Errors | |
| section. Reformat to 80 columns. | |
| 7 02/10/2010 Jon Leech Add const to SamplerParameter*v 'params'. | |
| 6 01/26/2010 pbrown Assign enum for SAMPLER_BINDING. | |
| 5 01/05/2010 gsellers Add SamplerParameterI*, GetSamplerParameterI* | |
| (bug 5806). | |
| Fix ambiguity about when sampler objects | |
| are created. Samplers names are reserved | |
| by GenSamplers but actually created | |
| (default state initialized) on first | |
| use. There is no bind-to-create for | |
| sampler objects. (bug 5813). | |
| Add language about effect of sampler | |
| objects on effective texture | |
| completeness (bug 5838). Specify that | |
| illegal sampler states for particular | |
| texture types result in incomplete | |
| textures, rather than undefined | |
| behavior. | |
| 4 12/11/2009 Jon Leech Reorganization and consistency edits | |
| resulting from 3.3 spec integration. | |
| Remove ARB suffixes. | |
| 3 11/19/2009 gsellers Feedback from bmerry. | |
| 2 11/11/2009 gsellers Incorporate feedback. | |
| 1 11/09/2009 gsellers Initial version based on draft | |
| EXT_separate_sampler_objects. |