mesa: OVR_multiview_multisampled_render_to_texture

this is automatically supported for anyone that supports OVR_multiview
and EXT_multisampled_render_to_texture

Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31235>
This commit is contained in:
Mike Blumenkrantz
2024-09-18 13:05:56 -04:00
committed by Marge Bot
parent 894b37e060
commit ac912b3754
10 changed files with 67 additions and 15 deletions

View File

@@ -353,6 +353,7 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
GL_OES_viewport_array DONE (freedreno/a6xx, nvc0, r600, radeonsi, softpipe, zink, iris, crocus/gen7.5+, asahi)
GL_OVR_multiview DONE (zink)
GL_OVR_multiview2 DONE (zink)
GL_OVR_multiview_multisampled_render_to_texture DONE (zink)
GLX_ARB_context_flush_control DONE (all drivers)
GLX_ARB_robustness_application_isolation not started
GLX_ARB_robustness_share_group_isolation not started

View File

@@ -1,6 +1,6 @@
# Please include a comment with the log message and a testcase triggering each
# VUID at the bottom of the file.
khronos_validation.message_id_filter = VUID-VkPhysicalDeviceProperties2-pNext-pNext,VUID-VkDeviceCreateInfo-pNext-pNext,VUID-RuntimeSpirv-Location-06272,VUID-vkCmdDrawMultiEXT-None-02699,VUID-RuntimeSpirv-OpEntryPoint-08743,VUID-vkCmdPipelineBarrier2-shaderTileImageColorReadAccess-08718,VUID-VkGraphicsPipelineCreateInfo-flags-06482,VUID-vkCmdPipelineBarrier2-None-08719
khronos_validation.message_id_filter = VUID-VkPhysicalDeviceProperties2-pNext-pNext,VUID-VkDeviceCreateInfo-pNext-pNext,VUID-RuntimeSpirv-Location-06272,VUID-vkCmdDrawMultiEXT-None-02699,VUID-RuntimeSpirv-OpEntryPoint-08743,VUID-vkCmdPipelineBarrier2-shaderTileImageColorReadAccess-08718,VUID-VkGraphicsPipelineCreateInfo-flags-06482,VUID-vkCmdPipelineBarrier2-None-08719,VUID-vkCmdDrawMultiEXT-rasterizationSamples-07474
khronos_validation.report_flags = error
khronos_validation.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG,VK_DBG_LAYER_ACTION_BREAK
VK_LAYER_ENABLES=VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT
@@ -60,3 +60,6 @@ khronos_validation.log_filename = stdout
# VUID-vkCmdPipelineBarrier2-shaderTileImageColorReadAccess-08718
# VUID-VkGraphicsPipelineCreateInfo-flags-06482
# VUID-vkCmdPipelineBarrier2-None-08719
# spec broken
# VUID-vkCmdDrawMultiEXT-rasterizationSamples-07474

View File

@@ -333,6 +333,7 @@ glFramebufferTexture3DEXT
glFramebufferTextureLayer
glFramebufferTextureLayerEXT
glFramebufferTextureMultiviewOVR
glFramebufferTextureMultisampleMultiviewOVR
glFrontFace
glFrustum
glFrustumf

View File

@@ -0,0 +1,18 @@
<?xml version="1.0"?>
<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
<OpenGLAPI>
<category name="GL_OVR_multiview_multisampled_render_to_texture">
<function name="FramebufferTextureMultisampleMultiviewOVR" es2="3.0" desktop="true" no_error="true">
<param name="target" type="GLenum"/>
<param name="attachment" type="GLenum"/>
<param name="texture" type="GLuint"/>
<param name="level" type="GLint"/>
<param name="samples" type="GLsizei"/>
<param name="baseviewindex" type="GLint"/>
<param name="numviews" type="GLsizei"/>
</function>
</category>
</OpenGLAPI>

View File

@@ -8064,6 +8064,8 @@
<xi:include href="OVR_multiview.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="OVR_multiview_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<!-- 46. GL_ARB_framebuffer_sRGB -->
<!-- 47. GL_ARB_geometry_shader4. There are no intentions to implement this extension -->

View File

@@ -1710,6 +1710,7 @@ offsets = {
"TexStorageAttribs3DEXT": 1674,
"FramebufferTextureMultiviewOVR": 1675,
"NamedFramebufferTextureMultiviewOVR": 1676,
"FramebufferTextureMultisampleMultiviewOVR": 1677,
}
functions = [
@@ -2037,6 +2038,7 @@ functions = [
"FramebufferTextureLayer",
"FramebufferTextureLayerARB",
"FramebufferTextureLayerEXT",
"FramebufferTextureMultisampleMultiviewOVR",
"FramebufferTextureMultiviewOVR",
"FrontFace",
"Frustum",

View File

@@ -225,6 +225,7 @@ struct gl_extensions
GLboolean OES_viewport_array;
GLboolean OVR_multiview;
GLboolean OVR_multiview2;
GLboolean OVR_multiview_multisampled_render_to_texture;
/* vendor extensions */
GLboolean AMD_compressed_ATC_texture;
GLboolean AMD_framebuffer_multisample_advanced;

View File

@@ -507,6 +507,7 @@ EXT(OES_vertex_half_float , ARB_half_float_vertex
EXT(OES_viewport_array , OES_viewport_array , x , x , x , 31, 2010)
EXT(OVR_multiview , OVR_multiview , GLL, GLC, x , 30, 2018)
EXT(OVR_multiview2 , OVR_multiview2 , GLL, GLC, x , 30, 2018)
EXT(OVR_multiview_multisampled_render_to_texture, OVR_multiview_multisampled_render_to_texture, GLL, GLC, x , 30, 2018)
EXT(S3_s3tc , ANGLE_texture_compression_dxt , GLL, GLC, x , x , 1999)
EXT(SGIS_generate_mipmap , dummy_true , GLL, x , x , x , 1997)

View File

@@ -4217,7 +4217,7 @@ _mesa_FramebufferTexture3D(GLenum target, GLenum attachment,
static ALWAYS_INLINE void
frame_buffer_texture(GLuint framebuffer, GLenum target,
GLenum attachment, GLuint texture,
GLint level, GLint layer, const char *func,
GLint level, GLsizei samples, GLint layer, const char *func,
bool dsa, bool no_error, bool check_layered, GLsizei numviews)
{
GET_CURRENT_CONTEXT(ctx);
@@ -4329,7 +4329,7 @@ frame_buffer_texture(GLuint framebuffer, GLenum target,
}
_mesa_framebuffer_texture(ctx, fb, attachment, att, texObj, textarget,
level, 0, layer, layered, numviews);
level, samples, layer, layered, numviews);
}
@@ -4338,7 +4338,7 @@ _mesa_FramebufferTextureLayer_no_error(GLenum target, GLenum attachment,
GLuint texture, GLint level,
GLint layer)
{
frame_buffer_texture(0, target, attachment, texture, level, layer,
frame_buffer_texture(0, target, attachment, texture, level, 0, layer,
"glFramebufferTextureLayer", false, true, false, 0);
}
@@ -4347,7 +4347,7 @@ void GLAPIENTRY
_mesa_FramebufferTextureLayer(GLenum target, GLenum attachment,
GLuint texture, GLint level, GLint layer)
{
frame_buffer_texture(0, target, attachment, texture, level, layer,
frame_buffer_texture(0, target, attachment, texture, level, 0, layer,
"glFramebufferTextureLayer", false, false, false, 0);
}
@@ -4358,7 +4358,7 @@ _mesa_NamedFramebufferTextureLayer_no_error(GLuint framebuffer,
GLuint texture, GLint level,
GLint layer)
{
frame_buffer_texture(framebuffer, 0, attachment, texture, level, layer,
frame_buffer_texture(framebuffer, 0, attachment, texture, level, 0, layer,
"glNamedFramebufferTextureLayer", true, true, false, 0);
}
@@ -4367,7 +4367,7 @@ void GLAPIENTRY
_mesa_NamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment,
GLuint texture, GLint level, GLint layer)
{
frame_buffer_texture(framebuffer, 0, attachment, texture, level, layer,
frame_buffer_texture(framebuffer, 0, attachment, texture, level, 0, layer,
"glNamedFramebufferTextureLayer", true, false, false, 0);
}
@@ -4377,7 +4377,7 @@ _mesa_FramebufferTextureMultiviewOVR_no_error(GLenum target, GLenum attachment,
GLuint texture, GLint level,
GLint baseViewIndex, GLsizei numViews)
{
frame_buffer_texture(0, target, attachment, texture, level, baseViewIndex,
frame_buffer_texture(0, target, attachment, texture, level, 0, baseViewIndex,
"glFramebufferTexture", false, true, false, numViews);
}
@@ -4387,17 +4387,37 @@ _mesa_FramebufferTextureMultiviewOVR(GLenum target, GLenum attachment,
GLuint texture, GLint level,
GLint baseViewIndex, GLsizei numViews)
{
frame_buffer_texture(0, target, attachment, texture, level, baseViewIndex,
frame_buffer_texture(0, target, attachment, texture, level, 0, baseViewIndex,
"glFramebufferTexture", false, false, false, numViews);
}
void GLAPIENTRY
_mesa_FramebufferTextureMultisampleMultiviewOVR_no_error(GLenum target, GLenum attachment,
GLuint texture, GLint level, GLsizei samples,
GLint baseViewIndex, GLsizei numViews)
{
frame_buffer_texture(0, target, attachment, texture, level, samples, baseViewIndex,
"FramebufferTextureMultisampleMultiviewOVR", false, true, false, numViews);
}
void GLAPIENTRY
_mesa_FramebufferTextureMultisampleMultiviewOVR(GLenum target, GLenum attachment,
GLuint texture, GLint level, GLsizei samples,
GLint baseViewIndex, GLsizei numViews)
{
frame_buffer_texture(0, target, attachment, texture, level, samples, baseViewIndex,
"FramebufferTextureMultisampleMultiviewOVR", false, false, false, numViews);
}
void GLAPIENTRY
_mesa_NamedFramebufferTextureMultiviewOVR_no_error(GLuint framebuffer, GLenum attachment,
GLuint texture, GLint level,
GLint baseViewIndex, GLsizei numViews)
{
frame_buffer_texture(framebuffer, 0, attachment, texture, level, baseViewIndex,
frame_buffer_texture(framebuffer, 0, attachment, texture, level, 0, baseViewIndex,
"glFramebufferTexture", true, true, false, numViews);
}
@@ -4407,7 +4427,7 @@ _mesa_NamedFramebufferTextureMultiviewOVR(GLuint framebuffer, GLenum attachment,
GLuint texture, GLint level,
GLint baseViewIndex, GLsizei numViews)
{
frame_buffer_texture(framebuffer, 0, attachment, texture, level, baseViewIndex,
frame_buffer_texture(framebuffer, 0, attachment, texture, level, 0, baseViewIndex,
"glFramebufferTexture", true, false, false, numViews);
}
@@ -4416,7 +4436,7 @@ void GLAPIENTRY
_mesa_FramebufferTexture_no_error(GLenum target, GLenum attachment,
GLuint texture, GLint level)
{
frame_buffer_texture(0, target, attachment, texture, level, 0,
frame_buffer_texture(0, target, attachment, texture, level, 0, 0,
"glFramebufferTexture", false, true, true, 0);
}
@@ -4425,7 +4445,7 @@ void GLAPIENTRY
_mesa_FramebufferTexture(GLenum target, GLenum attachment,
GLuint texture, GLint level)
{
frame_buffer_texture(0, target, attachment, texture, level, 0,
frame_buffer_texture(0, target, attachment, texture, level, 0, 0,
"glFramebufferTexture", false, false, true, 0);
}
@@ -4433,7 +4453,7 @@ void GLAPIENTRY
_mesa_NamedFramebufferTexture_no_error(GLuint framebuffer, GLenum attachment,
GLuint texture, GLint level)
{
frame_buffer_texture(framebuffer, 0, attachment, texture, level, 0,
frame_buffer_texture(framebuffer, 0, attachment, texture, level, 0, 0,
"glNamedFramebufferTexture", true, true, true, 0);
}
@@ -4442,7 +4462,7 @@ void GLAPIENTRY
_mesa_NamedFramebufferTexture(GLuint framebuffer, GLenum attachment,
GLuint texture, GLint level)
{
frame_buffer_texture(framebuffer, 0, attachment, texture, level, 0,
frame_buffer_texture(framebuffer, 0, attachment, texture, level, 0, 0,
"glNamedFramebufferTexture", true, false, true, 0);
}

View File

@@ -1297,6 +1297,9 @@ void st_init_extensions(struct pipe_screen *screen,
break;
}
extensions->OVR_multiview_multisampled_render_to_texture = extensions->EXT_multisampled_render_to_texture &&
extensions->OVR_multiview;
if (screen->get_param(screen, PIPE_CAP_OPENCL_INTEGER_FUNCTIONS) &&
screen->get_param(screen, PIPE_CAP_INTEGER_MULTIPLY_32X16)) {
extensions->INTEL_shader_integer_functions2 = GL_TRUE;