[Mesa-dev] [PATCH 1/4] mesa: add INTEL_blackhole_render

Lionel Landwerlin lionel.g.landwerlin at intel.com
Thu Mar 15 14:24:30 UTC 2018


Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
 include/GL/glext.h               |  5 +++++
 include/GLES2/gl2ext.h           |  5 +++++
 src/mapi/glapi/registry/gl.xml   |  8 +++++++-
 src/mesa/main/clear.c            |  2 +-
 src/mesa/main/enable.c           | 10 ++++++++++
 src/mesa/main/extensions_table.h |  1 +
 src/mesa/main/mtypes.h           |  7 +++++++
 7 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/include/GL/glext.h b/include/GL/glext.h
index 75fd1f61185..5584f03693b 100644
--- a/include/GL/glext.h
+++ b/include/GL/glext.h
@@ -9099,6 +9099,11 @@ GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRG
 #define GL_INTERLACE_READ_INGR            0x8568
 #endif /* GL_INGR_interlace_read */
 
+#ifndef GL_INTEL_blackhole_render
+#define GL_INTEL_blackhole_render 1
+#define GL_BLACKHOLE_RENDER_INTEL         0x83FC
+#endif /* GL_INTEL_blackhole_render */
+
 #ifndef GL_INTEL_conservative_rasterization
 #define GL_INTEL_conservative_rasterization 1
 #define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
diff --git a/include/GLES2/gl2ext.h b/include/GLES2/gl2ext.h
index a7d19a1fc83..8f23ba27084 100644
--- a/include/GLES2/gl2ext.h
+++ b/include/GLES2/gl2ext.h
@@ -2275,6 +2275,11 @@ GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target,
 #define GL_CUBIC_MIPMAP_LINEAR_IMG        0x913B
 #endif /* GL_IMG_texture_filter_cubic */
 
+#ifndef GL_INTEL_blackhole_render
+#define GL_INTEL_blackhole_render 1
+#define GL_BLACKHOLE_RENDER_INTEL         0x83FC
+#endif /* GL_INTEL_blackhole_render */
+
 #ifndef GL_INTEL_conservative_rasterization
 #define GL_INTEL_conservative_rasterization 1
 #define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
diff --git a/src/mapi/glapi/registry/gl.xml b/src/mapi/glapi/registry/gl.xml
index 833478aa515..226f983c428 100644
--- a/src/mapi/glapi/registry/gl.xml
+++ b/src/mapi/glapi/registry/gl.xml
@@ -4518,7 +4518,8 @@ typedef unsigned int GLhandleARB;
         <enum value="0x83F9" name="GL_PERFQUERY_DONOT_FLUSH_INTEL"/>
         <enum value="0x83FA" name="GL_PERFQUERY_FLUSH_INTEL"/>
         <enum value="0x83FB" name="GL_PERFQUERY_WAIT_INTEL"/>
-            <unused start="0x83FC" end="0x83FD" vendor="INTEL"/>
+        <enum value="0x83FC" name="GL_BLACKHOLE_RENDER_INTEL"/>
+            <unused start="0x83FD" vendor="INTEL"/>
         <enum value="0x83FE" name="GL_CONSERVATIVE_RASTERIZATION_INTEL"/>
         <enum value="0x83FF" name="GL_TEXTURE_MEMORY_LAYOUT_INTEL"/>
     </enums>
@@ -44046,6 +44047,11 @@ typedef unsigned int GLhandleARB;
                 <command name="glMapTexture2DINTEL"/>
             </require>
         </extension>
+        <extension name="GL_INTEL_blackhole_render" supported="gl|glcore|gles2">
+            <require>
+                <enum name="GL_BLACKHOLE_RENDER_INTEL"/>
+            </require>
+        </extension>
         <extension name="GL_INTEL_parallel_arrays" supported="gl">
             <require>
                 <enum name="GL_PARALLEL_ARRAYS_INTEL"/>
diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c
index 6beff9ed842..e9ab59b7116 100644
--- a/src/mesa/main/clear.c
+++ b/src/mesa/main/clear.c
@@ -175,7 +175,7 @@ clear(struct gl_context *ctx, GLbitfield mask, bool no_error)
       return;
    }
 
-   if (ctx->RasterDiscard)
+   if (ctx->RasterDiscard || ctx->IntelBlackholeRender)
       return;
 
    if (ctx->RenderMode == GL_RENDER) {
diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
index 7625a4c9577..8d16f6d3716 100644
--- a/src/mesa/main/enable.c
+++ b/src/mesa/main/enable.c
@@ -1127,6 +1127,16 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
          ctx->Color.BlendCoherent = state;
          break;
 
+      case GL_BLACKHOLE_RENDER_INTEL:
+         if (!_mesa_has_INTEL_blackhole_render(ctx))
+            goto invalid_enum_error;
+         if (ctx->IntelBlackholeRender == state)
+            return;
+         FLUSH_VERTICES(ctx, 0);
+         ctx->NewDriverState |= ctx->DriverFlags.NewIntelBlackholeRender;
+         ctx->IntelBlackholeRender = state;
+         break;
+
       default:
          goto invalid_enum_error;
    }
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 492f7c3d20a..3c1b9a8d803 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -307,6 +307,7 @@ EXT(IBM_texture_mirrored_repeat             , dummy_true
 
 EXT(INGR_blend_func_separate                , EXT_blend_func_separate                , GLL,  x ,  x ,  x , 1999)
 
+EXT(INTEL_blackhole_render                  , INTEL_blackhole_render                 , GLL, GLC,  x , ES2, 2018)
 EXT(INTEL_conservative_rasterization        , INTEL_conservative_rasterization       ,  x , GLC,  x ,  31, 2013)
 EXT(INTEL_performance_query                 , INTEL_performance_query                , GLL, GLC,  x , ES2, 2013)
 
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 734fefc97f4..960283612c8 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -4324,6 +4324,7 @@ struct gl_extensions
    GLboolean ATI_fragment_shader;
    GLboolean ATI_separate_stencil;
    GLboolean GREMEDY_string_marker;
+   GLboolean INTEL_blackhole_render;
    GLboolean INTEL_conservative_rasterization;
    GLboolean INTEL_performance_query;
    GLboolean KHR_blend_equation_advanced;
@@ -4693,6 +4694,11 @@ struct gl_driver_flags
 
    /** Shader constants (uniforms, program parameters, state constants) */
    uint64_t NewShaderConstants[MESA_SHADER_STAGES];
+
+   /**
+    * gl_context::IntelBlackholeRender
+    */
+   uint64_t NewIntelBlackholeRender;
 };
 
 struct gl_buffer_binding
@@ -5109,6 +5115,7 @@ struct gl_context
 
    GLboolean RasterDiscard;  /**< GL_RASTERIZER_DISCARD */
    GLboolean IntelConservativeRasterization; /**< GL_INTEL_CONSERVATIVE_RASTERIZATION */
+   GLboolean IntelBlackholeRender; /**< GL_INTEL_blackhole_render */
 
    /** Does glVertexAttrib(0) alias glVertex()? */
    bool _AttribZeroAliasesVertex;
-- 
2.16.2



More information about the mesa-dev mailing list