blob: 915bcab156a215689de786245ecdd7aa952b787b [file] [log] [blame]
Name
ARB_texture_multisample
Name Strings
GL_ARB_texture_multisample
Contact
Jeff Bolz, NVIDIA Corporation (jbolz 'at' nvidia.com)
Notice
Copyright (c) 2009-2014 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 on July 3, 2009.
Version
Last Modified Date: February 28, 2014
Revision: 12
Number
ARB Extension #67
Dependencies
This extension is written against the OpenGL 3.1 specification.
Overview
This extension provides support for two new types of "multisample
textures" - two-dimensional and two-dimensional array - as well as
mechanisms to fetch a specific sample from such a texture in a shader,
and to attach such textures to FBOs for rendering.
This extension also includes the following functionality, first described
in NV_explicit_multisample:
* A query in the API to query the location of samples within the pixel
* An explicit control for the multisample sample mask to augment the
control provided by SampleCoverage
New Procedures and Functions
void TexImage2DMultisample(enum target, sizei samples, enum internalformat,
sizei width, sizei height,
boolean fixedsamplelocations);
void TexImage3DMultisample(enum target, sizei samples, enum internalformat,
sizei width, sizei height, sizei depth,
boolean fixedsamplelocations);
void GetMultisamplefv(enum pname, uint index, float *val);
void SampleMaski(uint index, bitfield mask);
New Tokens
Accepted by the <pname> parameter of GetMultisamplefv:
SAMPLE_POSITION 0x8E50
Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, and by
the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
GetDoublev:
SAMPLE_MASK 0x8E51
Accepted by the <target> parameter of GetBooleani_v and
GetIntegeri_v:
SAMPLE_MASK_VALUE 0x8E52
Accepted by the <target> parameter of BindTexture and
TexImage2DMultisample:
TEXTURE_2D_MULTISAMPLE 0x9100
Accepted by the <target> parameter of TexImage2DMultisample:
PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
Accepted by the <target> parameter of BindTexture and
TexImage3DMultisample:
TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
Accepted by the <target> parameter of TexImage3DMultisample:
PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
Accepted by the <pname> parameter of GetBooleanv, GetDoublev, GetIntegerv,
and GetFloatv:
MAX_SAMPLE_MASK_WORDS 0x8E59
MAX_COLOR_TEXTURE_SAMPLES 0x910E
MAX_DEPTH_TEXTURE_SAMPLES 0x910F
MAX_INTEGER_SAMPLES 0x9110
TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
Accepted by the <pname> parameter of GetTexLevelParameter
TEXTURE_SAMPLES 0x9106
TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
Returned by the <type> parameter of GetActiveUniform:
SAMPLER_2D_MULTISAMPLE 0x9108
INT_SAMPLER_2D_MULTISAMPLE 0x9109
UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
Additions to Chapter 2 of the OpenGL 3.1 Specification (OpenGL Operation)
Add to table 2.9 "OpenGL Shading Language type tokens" page 56:
Type Name Token Keyword
----------------------------------------- ------------
SAMPLER_2D_MULTISAMPLE sampler2DMS
SAMPLER_2D_MULTISAMPLE_ARRAY sampler2DMSArray
INT_SAMPLER_2D_MULTISAMPLE_ARRAY isampler2DMSArray
UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE usampler2DMS
UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY usampler2DMSArray
Add to section 2.11.7, after subsection "Texel Fetches"
Multisample Texel Fetches
Multisample texel fetches are similar to standard texel fetches.
Since multisample buffers can't have mipmaps, there is no LOD
parameter. Instead, there is an integer parameter which selects the
sample number to be fetched from the buffer. The number identifying
the sample is the same as the value used to query the sample
location using GetMultisamplefv. Multisample textures support only
NEAREST filtering.
Additionally, this fetch may only be performed on a multisample
texture sampler. No other sample or fetch commands may be performed
on a multisample texture sampler.
Additions to Chapter 3 of the OpenGL 3.1 Specification (Rasterization)
(Insert into section 3.3.1, Multisampling after the discussion of
the query for SAMPLES)
The location of a given sample is queried with the command
void GetMultisamplefv(enum pname, uint index, float *val);
<pname> must be SAMPLE_POSITION and <index> corresponds to the
sample for which the location should be returned. The sample
location is returned as two floating point values in <val[0]> and
<val[1]>, each between 0 and 1, corresponding to the <x> and <y>
locations respectively in GL pixel space of that sample. (0.5, 0.5)
thus corresponds to the pixel center. An INVALID_ENUM error is
generated if <pname> is not SAMPLE_POSITION. An INVALID_VALUE error
is generated if <index> is greater than or equal to the value of
SAMPLES. If the multisample mode does not have fixed sample
locations, the returned values may only reflect the locations of
samples within some pixels.
Modify Section 3.8.1, Texture Image Specification (p. 143)
Add the two new targets to MAX_TEXTURE_SIZE description:
In a similar fashion, the maximum allowable width of a texel array
for a one or two-dimensional, one- or two-dimensional array,
two-dimensional multisample, or two-dimensional multisample array
texture, and the maximum allowable height of a two-dimensional,
two-dimensional array, two- dimensional multisample, or
two-dimensional multisample array texture, must be at least
2^(k-lod)+2*b_t for image arrays of level 0 through k, where k is
the log base 2 of MAX_TEXTURE_SIZE.
(Insert new Section 3.8.4, Multisample Textures. Renumber subsequent
sections.)
In addition to the texture types described in previous sections, two
additional types of textures are supported. A multisample texture is
similar to a two-dimensional or two-dimensional array texture,
except it contains multiple samples per texel. Multisample textures
do not have multiple image levels.
The commands
void TexImage2DMultisample(enum target, sizei samples,
enum internalformat,
sizei width, sizei height,
boolean fixedsamplelocations);
void TexImage3DMultisample(enum target, sizei samples,
enum internalformat,
sizei width, sizei height, sizei depth,
boolean fixedsamplelocations);
establish the data storage, format, dimensions, and number of
samples of a multisample texture's image. For TexImage2DMultisample,
<target> must be TEXTURE_2D_MULTISAMPLE or
PROXY_TEXTURE_2D_MULTISAMPLE and for TexImage3DMultisample <target>
must be TEXTURE_2D_MULTISAMPLE_ARRAY or
PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY. <width> and <height> are the
dimensions in texels of the texture.
<internalformat> must be color-renderable, depth-renderable, or
stencil- renderable (as defined in section 4.4.4). The error
INVALID_OPERATION may be generated if any of the following are true:
* <internalformat> is a depth/stencil-renderable format and
<samples> is greater than the value of MAX_DEPTH_TEXTURE_SAMPLES
* <internalformat> is a color-renderable format and <samples> is
greater than the value of MAX_COLOR_TEXTURE_SAMPLES
* <internalformat> is a signed or unsigned integer format and
<samples> is greater than the value of MAX_INTEGER_SAMPLES.
If <fixedsamplelocations> is TRUE, the image will use identical
sample locations and the same number of samples for all texels in
the image, and the sample locations will not depend on the
internalformat or size of the image.
An INVALID_VALUE error is generated by TexImage2DMultisample if <width>
or <height> is greater than the value of MAX_TEXTURE_SIZE. An
INVALID_VALUE error is generated by TexImage3DMultisample if <width>,
<height>, or <depth> is greater than the value of MAX_3DTEXTURE_SIZE; An
INVALID_VALUE error is generated if <samples> is greater than the value
of MAX_SAMPLES. An OUT_OF_MEMORY error is generated if the GL is unable
to create a texture level of the requested size.
When a multisample texture is accessed in a shader, the access takes
one vector of integers describing which texel to fetch and an
integer corresponding to the sample numbers described in section
3.3.1 describing which sample within the texel to fetch. No standard
sampling instructions are allowed on the multisample texture
targets.
Modify Section 3.8.11, Texture Completeness (p. 154)
(insert after first paragraph of section, p. 154)
For multisample textures, a texture is complete if each dimension of
the texture's level is positive.
Modify Section 3.8.12, Texture State and Proxy State (p. 155)
(insert into the first paragraph of the section, p. 155)
... the compressed flag set to FALSE, and a zero compressed size).
Multisample textures contain an integer identifying the number of
samples in each texel. The buffer texture target has associated an
integer containing ...
(add a new paragraph after the paragraph starting with "Proxy Arrays...")
Proxy array for two-dimensional multisample and two-dimensional
multisample array textures are operated on in the same way when
TexImage2DMultisample is called with <target> specified as
PROXY_TEXTURE_2D_MULTISAMPLE, or TexImage3DMultisample is called
with <target> specified as PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY.
Modify Section 3.8.13, Texture Objects (p. 157)
(modify first paragraphs of section, p. 157, simply adding
references to multisample textures)
In addition to the default textures 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, named one-, two-, and
three-dimensional, one- and two-dimensional array, rectangular,
buffer, cube map, two-dimensional multisample, and two- dimensional
multisample array texture objects can be created and operated upon.
The name space for texture objects is the unsigned integers, with
zero reserved by the GL.
...
In the initial state, 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 have one-, two-, and three-dimensional,
one- and two-dimensional array, rectangular, buffer, cube map,
two-dimensional multisample, and two-dimensional multisample array
texture state vectors respectively associated with them. In order
that access to these initial textures not be lost, they are treated
as texture objects all of whose names are 0. The initial one-, two-,
three- dimensional, one- and two-dimensional array, rectangular,
buffer, cube map, two-dimensional multisample, and two-dimensional
multisample array texture is therefore operated upon, queried, and
applied as 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 respectively while 0 is bound to the
corresponding targets.
(modify second paragraph, p. 158)
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.
Additions to Chapter 4 of the OpenGL 3.1 Specification (Per-Fragment
Operations and the Frame Buffer)
Modify Section 4.1.3, Multisample Fragment Operations
Modify the first paragraph to include SAMPLE_MASK and
SAMPLE_MASK_VALUE on the list of values the coverage value is
modified based on.
Modify the discussion of SAMPLE_COVERAGE to start with "Next" instead of
"Finally"
Add after the discussion of SAMPLE_COVERAGE:
Finally, if SAMPLE_MASK is enabled, the fragment coverage is ANDed
with the coverage value SAMPLE_MASK_VALUE. The value of
SAMPLE_MASK_VALUE is specified using
void SampleMaski(GLuint index, GLbitfield mask);
with <mask> set to the desired mask for <maskNumber>.
SAMPLE_MASK_VALUE is queried by calling GetIntegeri_v with <pname>
set to SAMPLE_MASK_VALUE and the index set to <maskNumber>. Bit B of
mask M corresponds to sample 32*M+B as described in Section 3.3.1.
The error INVALID_VALUE is generated if the mask word indexed is
greater than or equal to MAX_SAMPLE_MASK_WORDS.
Modify Section 4.4.2, Attaching Images to Framebuffer Objects, p. 203
(the first paragraph of RenderbufferStorageMultisample p. 205)
... If either <width> or <height> is greater than the value of
MAX_RENDERBUFFER_SIZE, or if <samples> is greater than the value of
MAX_SAMPLES, then the error INVALID_VALUE is generated. If
<internalformat> is a signed or unsigned integer format and
<samples> is greater than the value of MAX_INTEGER_SAMPLES, then the
error INVALID_OPERATION is generated. (see ``Required Renderbuffer
Formats'' below). ...
(The second paragraph of "Required Renderbuffer Formats" p. 206):
Implementations must support creation of renderbuffers in these
required formats with up to the value of MAX_SAMPLES multisamples,
with the exception that the signed and unsigned integer formats are
required only to support creation of renderbuffers with up to the
value of MAX_INTEGER_SAMPLES multisamples, which must be at least
one.
Modify the description of FrameBufferTextureARB in
ARB_geometry_shader4, to allow multisample array textures with
FramebufferTextureARB:
If <texture> is the name of a three-dimensional texture, cube map
texture, one- or two-dimensional array texture, or two-dimensional
multisample array texture, the texture level attached to the
framebuffer attachment point is an array of images, and the
framebuffer attachment is considered layered.
(At the end of p. 208, describing FrameBufferTexture*D)
If <textarget> is TEXTURE_RECTANGLE, TEXTURE_2D_MULTISAMPLE, or
TEXTURE_2D_MULTISAMPLE_ARRAY, then <level> must be zero.
...
For FramebufferTexture2D, if <texture> is not zero, then <textarget>
must be one of of TEXTURE_2D, TEXTURE_RECTANGLE,
TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y,
TEXTURE_CUBE_MAP_POSITIVE_Z, TEXTURE_CUBE_MAP_NEGATIVE_X,
TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Z, or
TEXTURE_2D_MULTISAMPLE.
...
The command
void FramebufferTextureLayer(enum target, enum attachment,
uint texture, int level, int layer);
operates identically to FramebufferTexture3D, except that it
attaches a single layer of a three-dimensional, one- or
two-dimensional array, or two-dimensional multisample array texture
layer is an integer indicating the layer sample number, and is
treated identically to the layer parameter in FramebufferTexture3D.
The error INVALID_VALUE is generated if texture is non-zero and
layer is negative. The error INVALID_OPERATION is generated if
texture is non-zero and is not the name of a three dimensional, two-
dimensional multisample array, or one-or two-dimensional array
texture. Unlike FramebufferTexture3D, no textarget parameter is
accepted. ...
Modify Section 4.4.4, Framebuffer Completeness, p. 212
(Modify the last bullet at the top of p. 215)
- The value of RENDERBUFFER_SAMPLES is the same for all attached
renderbuffers; the value of TEXTURE_SAMPLES is the same for all
attached textures; and, if the attached images are a mix of
renderbuffers and textures, the value of RENDERBUFFER_SAMPLES
matches the value of TEXTURE_SAMPLES.
{ FRAMEBUFFER_INCOMPLETE_MULTISAMPLE }
- The value of TEXTURE_FIXED_SAMPLE_LOCATIONS is the same for all
attached textures; if the attached images are a mix of
renderbuffers and textures, the value of
TEXTURE_FIXED_SAMPLE_LOCATIONS must be TRUE for all attached
textures.
{ FRAMEBUFFER_INCOMPLETE_MULTISAMPLE }
Additions to Chapter 6 of the OpenGL 3.1 Specification (State and
State Requests)
Edit Section 6.1.3, p. 223 (Enumerated Queries)
Add TEXTURE_2D_MULTISAMPLE, PROXY_TEXTURE_2D_MULTISAMPLE,
TEXTURE_2D_MULTISAMPLE_ARRAY, and PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY
to the list of valid targets for GetTexLevelParameter{if}v.
Additions to the AGL/GLX/WGL Specifications
None
GLX Protocol
TBD
Errors
The error INVALID_VALUE is generated by GetBooleani_v and
GetIntegeri_v if <target> is SAMPLE_MASK_VALUE and <index> is greater
than or equal to MAX_SAMPLE_MASK_WORDS.
The error INVALID_VALUE is generated by SampleMaski if <index> is
greater than or equal to MAX_SAMPLE_MASK_WORDS.
The error INVALID_ENUM is generated by GetMultisamplefv if <pname>
is not SAMPLE_POSITION.
The error INVALID_VALUE is generated by GetMultisamplefv if <index> is
greater than or equal to the value of SAMPLES.
The error INVALID_OPERATION is generated by TexImage2DMultisample
and TexImage3DMultisample if the number of samples exceeds the
implementation dependent maximum for the given internal format.
The error INVALID_VALUE is generated by TexImage2DMultisample
TexImage3DMultisample if either <width> or <height> is greater than the
value of MAX_TEXTURE_SIZE, or if <samples> is greater than the value of
MAX_SAMPLES.
The error INVALID_VALUE is generated by TexImage3DMultisample if
<width>, <height>, or <depth> is greater than the value of
MAX_3D_TEXTURE_SIZE, or if <samples> is greater than the value of
MAX_SAMPLES.
The error OUT_OF_MEMORY is generated by TexImage2DMultisample and
TexImage3DMultisample if the GL is unable to create a texture level
of the requested size.
The error INVALID_OPERATION is generated by
RenderbufferStorageMultisample if <internalformat> is a signed or
unsigned integer format and <samples> is greater than the value of
MAX_INTEGER_SAMPLES.
New State
Get Value Get Command Type Initial Value
--------- ----------- ---- -------------
SAMPLE_MASK IsEnabled B FALSE
SAMPLE_MASK_VALUE GetIntegeri_v nxZ+ ~0
Where n is the number of sample mask words (the value of
MAX_SAMPLE_MASK_WORDS) the implementation supports.
(add to table 6.12, Texture State Per Texture Unit/Binding Point p. 250)
Initial
Get Value Type Get Command Value Description Sec.
------------------------------------ ---- ----------- ------- --------------------------- ------
TEXTURE_BINDING_2D_MULTISAMPLE 32*xZ+ GetIntegerv 0 Texture object bound to 3.8.13
TEXTURE_2D_MULTISAMPLE
TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 32*xZ+ GetIntegerv 0 Texture object bound to 3.8.13
TEXTURE_2D_MULTISAMPLE_ARRAY
(add to table 6.14, Textures (state per texture image p. 252)
Initial
Get Value Type Get Command Value Description Sec.
---------------------- ---- ------------------- ------- --------------------------- ------
TEXTURE_SAMPLES Z+ GetTexLevelParameter 0 Number of samples per texel 3.8.4
TEXTURE_FIXED_SAMPLE_LOCATIONS B GetTexLevelParameter TRUE Whether the image uses a 3.8.4
fixed sample pattern
(add to table 6.41, Framebuffer dependent Values, p. 279)
Initial
Get Value Type Get Command Value Description Sec.
------------------ ---------- ------------------ -------------- --------------- ------
SAMPLE_POSITION N*2*R[0,1] GetMultisamplefv implementation Explicit sample 3.2.1
dependent positions
Where N is the number of samples (the value of SAMPLES) the framebuffer supports.
New Implementation Dependent State
Minimum
Get Value Type Get Command Value Description Sec.
--------- ------- ----------- ------- ------------------------ ------
MAX_SAMPLE_MASK_WORDS Z+ GetIntegerv 1 maximum number of sample 4.1.3
mask words
MAX_COLOR_TEXTURE_SAMPLES Z+ GetIntegerv 1 maximum number of samples 4.1.3
in a color multisample
texture
MAX_DEPTH_TEXTURE_SAMPLES Z+ GetIntegerv 1 maximum number of samples 4.1.3
in a depth/stencil
multisample texture
MAX_INTEGER_SAMPLES Z+ GetIntegerv 1 Maximum number of samples 4.4.2
in integer format
multisample buffers
Modifications to the OpenGL Shading Language Specification, Version 1.40
Including the following line in a shader can be used to control the
language featured described in this extension:
#extension GL_ARB_texture_multisample : <behavior>
where <behavior> is as specified in section 3.3.
A new preprocessor #define is added to the OpenGL Shading Language:
#define GL_ARB_texture_multisample 1
Add to section 3.6 "Keywords"
The following new sampler types are added:
sampler2DMS, isampler2DMS, usampler2DMS,
sampler2DMSArray, isampler2DMSArray, usampler2DMSArray
Add to section 4.1 "Basic Types"
Add the following sampler type to the "Floating Point Sampler Types"
table:
sampler2DMS handle for accessing a 2D multisample texture
sampler2DMSArray handle for accessing a 2D multisample array texture
Add the following sampler type to the "Unsigned Integer Sampler
Types" table:
usampler2DMS handle for accessing an unsigned integer 2D multisample texture
usampler2DMSArray handle for accessing an unsigned integer 2D multisample array texture
Add the following sampler type to the "Integer Sampler Types" table:
isampler2DMS handle for accessing an integer 2D multisample texture
isampler2DMSArray handle for accessing an integer 2D multisample array texture
Add to section 8.7 "Texture Lookup Functions"
Add new functions to the set of allowed texture lookup functions:
Syntax:
gvec4 texelFetch(gsampler2DMS sampler, ivec2 P, int sample)
gvec4 texelFetch(gsampler2DMSArray sampler, ivec3 P, int sample)
Description:
Use integer texture coordinate <P> to lookup a single sample
<sample> on the texture bound to <sampler> as described in section
2.11.7.1 of the OpenGL specification "Multisample Texel Fetches".
Syntax:
ivec2 textureSize(gsampler2DMS sampler)
ivec3 textureSize(gsampler2DMSArray sampler)
Description:
Returns the dimensions, width and height of level 0 for the
texture bound to <sampler>, as described in section 2.11.7.1 of
the OpenGL specification section "Texture Size Query".
Examples
Issues
(1) Do we need new "max size" queries for the new targets?
RESOLVED: No. The existing MAX_TEXTURE_SIZE applies to 2D multisample
textures, and MAX_3D_TEXTURE_SIZE to 3D multisample textures.
(2) What commands may be used on multisample textures?
RESOLVED: Multisample textures can be bound for rendering and texturing,
but they cannot be loaded/read with SubImage commands (TexSubImage,
CopyTexSubImage, GetTexImage), they don't support compressed formats,
and they don't need TexParameters since they can only be fetched with
texelFetchMultisample.
(3) Should the new TexImage commands take an "int level" argument?
RESOLVED: No. We can add new commands if/when we ever add mipmapped
multisample textures.
(4) GetMultisamplefv takes an index to support >32 samples, but
NV_gpu_shader4_1's gl_SampleMask is only 32 bits. What gives?
RESOLVED: This is gpu_shader4_1's problem, not ARB_texture_multisample's
problem.
(5) Should GLSL include a query to return the sample count of a
texture, either as part of textureSizeMultisample or
stand-alone?
RESOLVED: No, there hasn't been a demand for it.
(6) How does SAMPLE_POSITION interact with
EXT_fragment_coord_conventions?
RESOLVED: The SAMPLE_POSITION query is not in any way affected by
the shader state added in EXT_fragment_coord_conventions. It is
expected that the returned values will not actually be used within
the shader, but rather to compute filter weights on the CPU, so
whether the fragment coord is inverted or translated by 0.5 doesn't
matter.
(7) Should we use "TexImage3DMultisample" to make things look like
regular 2D arrays, or just have TexImage2DArrayMultisample?
RESOLVED: Leave it as is.
(8) How should we deal with varying sample locations?
RESOLVED: Allow the application to explicitly request fixed sample
locations for when a texture will be used to do custom downsamples.
When this is requested, the values returned by GetMultisamplefv will
be valid for all texels in the image and can be used to construct
elaborate filter kernels that can safely be used across the entire
image.
(9) Are depth multisample textures supported?
RESOLVED: Some implementations may not support texturing from a
multisample depth/stencil texture. In that case, they would export
MAX_DEPTH_TEXTURE_SAMPLES = 1.
Revision History
Rev. Date Author Changes
---- -------- -------- -----------------------------------------------
12 2/28/14 Jon Leech Add missing error for invalid <pname> to
GetMultisamplefv, and change texture size
limits for TexImage3DMultisample to the value
of MAX_3D_TEXTURE_SIZE (Bugs 11134, 11135).
11 9/23/13 Jon Leech Change type of <internalformat> argument to
enum (Bug 10496).
10 8/02/09 Jon Leech Reformat to 80 columns and assign ARB
extension number.
9 7/23/09 groth Update return of textureSize(gsampler2DMSarray)
8 7/20/09 Jon Leech Assign enum values.
7 6/26/09 groth Update some language to correspond to gl3.2
6 6/11/09 groth Add new max queries to token section
5 5/28/09 groth Add MAX_INTEGER_SAMPLES query.
4 5/22/09 jbolz Add max sample queries.
3 5/14/09 jbolz Add allowance for not supporting multisample
depth textures.
2 5/08/09 jbolz Add allowance for varying sample locations,
and a mechanism to request fixed locations.
Resolve some issues.
1 4/30/09 jbolz First revision.