diff --git a/docs/features.txt b/docs/features.txt index 289477e0321..c0140aca3f8 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -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 diff --git a/src/gallium/drivers/zink/ci/zink-lvp-validation-settings.txt b/src/gallium/drivers/zink/ci/zink-lvp-validation-settings.txt index e3e3c5546df..41229bb16e8 100644 --- a/src/gallium/drivers/zink/ci/zink-lvp-validation-settings.txt +++ b/src/gallium/drivers/zink/ci/zink-lvp-validation-settings.txt @@ -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 diff --git a/src/gallium/targets/osmesa/osmesa-symbols.txt b/src/gallium/targets/osmesa/osmesa-symbols.txt index daf58d227b1..23fd1fa2547 100644 --- a/src/gallium/targets/osmesa/osmesa-symbols.txt +++ b/src/gallium/targets/osmesa/osmesa-symbols.txt @@ -333,6 +333,7 @@ glFramebufferTexture3DEXT glFramebufferTextureLayer glFramebufferTextureLayerEXT glFramebufferTextureMultiviewOVR +glFramebufferTextureMultisampleMultiviewOVR glFrontFace glFrustum glFrustumf diff --git a/src/mapi/glapi/gen/OVR_multiview_multisampled_render_to_texture.xml b/src/mapi/glapi/gen/OVR_multiview_multisampled_render_to_texture.xml new file mode 100755 index 00000000000..4dc0d253ca5 --- /dev/null +++ b/src/mapi/glapi/gen/OVR_multiview_multisampled_render_to_texture.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index 305c1fa558d..e356035dd9d 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -8064,6 +8064,8 @@ + + diff --git a/src/mapi/glapi/gen/static_data.py b/src/mapi/glapi/gen/static_data.py index 97b64d9157d..6bebde08698 100644 --- a/src/mapi/glapi/gen/static_data.py +++ b/src/mapi/glapi/gen/static_data.py @@ -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", diff --git a/src/mesa/main/consts_exts.h b/src/mesa/main/consts_exts.h index f7c7c04be62..e0a5ed0c930 100644 --- a/src/mesa/main/consts_exts.h +++ b/src/mesa/main/consts_exts.h @@ -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; diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index d38ef4a15ec..8c9117d60dd 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -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) diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 2d242135a42..b2d6ec618ff 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -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); } diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 907023b8f1f..650c831f992 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -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;