Capitalize the commit title.

It might be nice to split this patch up into mesa/main and Gallium parts.

Also...

On 04.04.2016 06:41, Bas Nieuwenhuizen wrote:
Signed-off-by: Bas Nieuwenhuizen <[email protected]>
---
  src/gallium/docs/source/screen.rst               | 4 +++-
  src/gallium/drivers/freedreno/freedreno_screen.c | 1 +
  src/gallium/drivers/i915/i915_screen.c           | 1 +
  src/gallium/drivers/ilo/ilo_screen.c             | 1 +
  src/gallium/drivers/llvmpipe/lp_screen.c         | 1 +
  src/gallium/drivers/nouveau/nv30/nv30_screen.c   | 1 +
  src/gallium/drivers/nouveau/nv50/nv50_screen.c   | 1 +
  src/gallium/drivers/nouveau/nvc0/nvc0_screen.c   | 1 +
  src/gallium/drivers/r300/r300_screen.c           | 1 +
  src/gallium/drivers/r600/r600_pipe.c             | 1 +
  src/gallium/drivers/radeonsi/si_pipe.c           | 1 +
  src/gallium/drivers/softpipe/sp_screen.c         | 1 +
  src/gallium/drivers/svga/svga_screen.c           | 1 +
  src/gallium/drivers/swr/swr_screen.cpp           | 1 +
  src/gallium/drivers/vc4/vc4_screen.c             | 1 +
  src/gallium/drivers/virgl/virgl_screen.c         | 1 +
  src/gallium/include/pipe/p_defines.h             | 1 +
  src/mesa/main/extensions_table.h                 | 1 +
  src/mesa/main/mtypes.h                           | 1 +
  src/mesa/main/version.c                          | 2 +-
  src/mesa/state_tracker/st_extensions.c           | 1 +
  21 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/gallium/docs/source/screen.rst 
b/src/gallium/docs/source/screen.rst
index 47a19de..02564bd 100644
--- a/src/gallium/docs/source/screen.rst
+++ b/src/gallium/docs/source/screen.rst
@@ -323,7 +323,9 @@ The integer capabilities:
  * ``PIPE_CAP_PCI_BUS``: Return the PCI bus number.
  * ``PIPE_CAP_PCI_DEVICE``: Return the PCI device number.
  * ``PIPE_CAP_PCI_FUNCTION``: Return the PCI function number.
-
+* ``PIPE_CAP_ROBUST_BUFFER_ACCESS``: Implementation uses bounds checking on
+  resource accesses by shader if the context is create with

*created.

Also, I think this comment should say slightly more about how the bounds checking works, because ARB_robust_buffer_access_behavior says more, i.e. stores being dropped and loads returning 0 or some value from inside the buffer. Maybe just state that the intended out-of-bounds behavior is that of the extension.

Cheers,
Nicolai

+  PIPE_CONTEXT_ROBUST_BUFFER_ACCESS.

  .. _pipe_capf:

diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c 
b/src/gallium/drivers/freedreno/freedreno_screen.c
index d47cb07..6bd3d81 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.c
+++ b/src/gallium/drivers/freedreno/freedreno_screen.c
@@ -255,6 +255,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum 
pipe_cap param)
        case PIPE_CAP_INVALIDATE_BUFFER:
        case PIPE_CAP_GENERATE_MIPMAP:
        case PIPE_CAP_SURFACE_REINTERPRET_BLOCKS:
+       case PIPE_CAP_ROBUST_BUFFER_ACCESS:
                return 0;

        case PIPE_CAP_MAX_VIEWPORTS:
diff --git a/src/gallium/drivers/i915/i915_screen.c 
b/src/gallium/drivers/i915/i915_screen.c
index f4aa310..b8ad3c8 100644
--- a/src/gallium/drivers/i915/i915_screen.c
+++ b/src/gallium/drivers/i915/i915_screen.c
@@ -269,6 +269,7 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap 
cap)
     case PIPE_CAP_PCI_BUS:
     case PIPE_CAP_PCI_DEVICE:
     case PIPE_CAP_PCI_FUNCTION:
+   case PIPE_CAP_ROBUST_BUFFER_ACCESS:
        return 0;

     case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS:
diff --git a/src/gallium/drivers/ilo/ilo_screen.c 
b/src/gallium/drivers/ilo/ilo_screen.c
index 7812c82..ebe17a0 100644
--- a/src/gallium/drivers/ilo/ilo_screen.c
+++ b/src/gallium/drivers/ilo/ilo_screen.c
@@ -498,6 +498,7 @@ ilo_get_param(struct pipe_screen *screen, enum pipe_cap 
param)
     case PIPE_CAP_PCI_BUS:
     case PIPE_CAP_PCI_DEVICE:
     case PIPE_CAP_PCI_FUNCTION:
+   case PIPE_CAP_ROBUST_BUFFER_ACCESS:
        return 0;

     case PIPE_CAP_VENDOR_ID:
diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c 
b/src/gallium/drivers/llvmpipe/lp_screen.c
index 2529b54..6d54685 100644
--- a/src/gallium/drivers/llvmpipe/lp_screen.c
+++ b/src/gallium/drivers/llvmpipe/lp_screen.c
@@ -319,6 +319,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum 
pipe_cap param)
     case PIPE_CAP_PCI_BUS:
     case PIPE_CAP_PCI_DEVICE:
     case PIPE_CAP_PCI_FUNCTION:
+   case PIPE_CAP_ROBUST_BUFFER_ACCESS:
        return 0;
     }
     /* should only get here on unhandled cases */
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_screen.c 
b/src/gallium/drivers/nouveau/nv30/nv30_screen.c
index b105c6a..5e11c90 100644
--- a/src/gallium/drivers/nouveau/nv30/nv30_screen.c
+++ b/src/gallium/drivers/nouveau/nv30/nv30_screen.c
@@ -192,6 +192,7 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum 
pipe_cap param)
     case PIPE_CAP_PCI_BUS:
     case PIPE_CAP_PCI_DEVICE:
     case PIPE_CAP_PCI_FUNCTION:
+   case PIPE_CAP_ROBUST_BUFFER_ACCESS:
        return 0;

     case PIPE_CAP_VENDOR_ID:
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c 
b/src/gallium/drivers/nouveau/nv50/nv50_screen.c
index ba5e500..12f35ce 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c
@@ -245,6 +245,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum 
pipe_cap param)
     case PIPE_CAP_PCI_BUS:
     case PIPE_CAP_PCI_DEVICE:
     case PIPE_CAP_PCI_FUNCTION:
+   case PIPE_CAP_ROBUST_BUFFER_ACCESS:
        return 0;

     case PIPE_CAP_VENDOR_ID:
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c 
b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
index 14438ce..f41c4d5 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
@@ -238,6 +238,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum 
pipe_cap param)
     case PIPE_CAP_PCI_BUS:
     case PIPE_CAP_PCI_DEVICE:
     case PIPE_CAP_PCI_FUNCTION:
+   case PIPE_CAP_ROBUST_BUFFER_ACCESS:
        return 0;

     case PIPE_CAP_VENDOR_ID:
diff --git a/src/gallium/drivers/r300/r300_screen.c 
b/src/gallium/drivers/r300/r300_screen.c
index 1c3bb64..70eab28 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -214,6 +214,7 @@ static int r300_get_param(struct pipe_screen* pscreen, enum 
pipe_cap param)
          case PIPE_CAP_SURFACE_REINTERPRET_BLOCKS:
          case PIPE_CAP_QUERY_BUFFER_OBJECT:
          case PIPE_CAP_QUERY_MEMORY_INFO:
+       case PIPE_CAP_ROBUST_BUFFER_ACCESS:
              return 0;

          /* SWTCL-only features. */
diff --git a/src/gallium/drivers/r600/r600_pipe.c 
b/src/gallium/drivers/r600/r600_pipe.c
index c97e341..993f189 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -364,6 +364,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum 
pipe_cap param)
        case PIPE_CAP_GENERATE_MIPMAP:
        case PIPE_CAP_STRING_MARKER:
        case PIPE_CAP_QUERY_BUFFER_OBJECT:
+       case PIPE_CAP_ROBUST_BUFFER_ACCESS:
                return 0;

        case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
diff --git a/src/gallium/drivers/radeonsi/si_pipe.c 
b/src/gallium/drivers/radeonsi/si_pipe.c
index f9e3e8c..e0fecac 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -358,6 +358,7 @@ static int si_get_param(struct pipe_screen* pscreen, enum 
pipe_cap param)
        case PIPE_CAP_GENERATE_MIPMAP:
        case PIPE_CAP_STRING_MARKER:
        case PIPE_CAP_QUERY_BUFFER_OBJECT:
+       case PIPE_CAP_ROBUST_BUFFER_ACCESS:
                return 0;

        case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
diff --git a/src/gallium/drivers/softpipe/sp_screen.c 
b/src/gallium/drivers/softpipe/sp_screen.c
index bfd3598..ea5e91c 100644
--- a/src/gallium/drivers/softpipe/sp_screen.c
+++ b/src/gallium/drivers/softpipe/sp_screen.c
@@ -270,6 +270,7 @@ softpipe_get_param(struct pipe_screen *screen, enum 
pipe_cap param)
     case PIPE_CAP_PCI_BUS:
     case PIPE_CAP_PCI_DEVICE:
     case PIPE_CAP_PCI_FUNCTION:
+   case PIPE_CAP_ROBUST_BUFFER_ACCESS:
        return 0;
     }
     /* should only get here on unhandled cases */
diff --git a/src/gallium/drivers/svga/svga_screen.c 
b/src/gallium/drivers/svga/svga_screen.c
index c0873c0..c4c251f 100644
--- a/src/gallium/drivers/svga/svga_screen.c
+++ b/src/gallium/drivers/svga/svga_screen.c
@@ -364,6 +364,7 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap 
param)
     case PIPE_CAP_PCI_BUS:
     case PIPE_CAP_PCI_DEVICE:
     case PIPE_CAP_PCI_FUNCTION:
+   case PIPE_CAP_ROBUST_BUFFER_ACCESS:
        return 0;
     case PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT:
        return 64;
diff --git a/src/gallium/drivers/swr/swr_screen.cpp 
b/src/gallium/drivers/swr/swr_screen.cpp
index f9e52be..7bc0b91 100644
--- a/src/gallium/drivers/swr/swr_screen.cpp
+++ b/src/gallium/drivers/swr/swr_screen.cpp
@@ -337,6 +337,7 @@ swr_get_param(struct pipe_screen *screen, enum pipe_cap 
param)
     case PIPE_CAP_SURFACE_REINTERPRET_BLOCKS:
     case PIPE_CAP_QUERY_BUFFER_OBJECT:
     case PIPE_CAP_QUERY_MEMORY_INFO:
+   case PIPE_CAP_ROBUST_BUFFER_ACCESS:
        return 0;
     }

diff --git a/src/gallium/drivers/vc4/vc4_screen.c 
b/src/gallium/drivers/vc4/vc4_screen.c
index 92d910b..0d47b8e 100644
--- a/src/gallium/drivers/vc4/vc4_screen.c
+++ b/src/gallium/drivers/vc4/vc4_screen.c
@@ -207,6 +207,7 @@ vc4_screen_get_param(struct pipe_screen *pscreen, enum 
pipe_cap param)
          case PIPE_CAP_PCI_BUS:
          case PIPE_CAP_PCI_DEVICE:
          case PIPE_CAP_PCI_FUNCTION:
+        case PIPE_CAP_ROBUST_BUFFER_ACCESS:
                  return 0;

                  /* Stream output. */
diff --git a/src/gallium/drivers/virgl/virgl_screen.c 
b/src/gallium/drivers/virgl/virgl_screen.c
index 8126bde..d53747c 100644
--- a/src/gallium/drivers/virgl/virgl_screen.c
+++ b/src/gallium/drivers/virgl/virgl_screen.c
@@ -239,6 +239,7 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap 
param)
     case PIPE_CAP_PCI_BUS:
     case PIPE_CAP_PCI_DEVICE:
     case PIPE_CAP_PCI_FUNCTION:
+   case PIPE_CAP_ROBUST_BUFFER_ACCESS:
        return 0;
     case PIPE_CAP_VENDOR_ID:
        return 0x1af4;
diff --git a/src/gallium/include/pipe/p_defines.h 
b/src/gallium/include/pipe/p_defines.h
index 6f30f9e..d95f416 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -690,6 +690,7 @@ enum pipe_cap
     PIPE_CAP_PCI_BUS,
     PIPE_CAP_PCI_DEVICE,
     PIPE_CAP_PCI_FUNCTION,
+   PIPE_CAP_ROBUST_BUFFER_ACCESS,
  };

  #define PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 (1 << 0)
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 1190390..54811b6 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -91,6 +91,7 @@ EXT(ARB_point_sprite                        , ARB_point_sprite
  EXT(ARB_program_interface_query             , dummy_true                      
       , GLL, GLC,  x ,  x , 2012)
  EXT(ARB_provoking_vertex                    , EXT_provoking_vertex            
       , GLL, GLC,  x ,  x , 2009)
  EXT(ARB_query_buffer_object                 , ARB_query_buffer_object         
       , GLL, GLC,  x ,  x , 2013)
+EXT(ARB_robust_buffer_access_behavior       , 
ARB_robust_buffer_access_behavior      , GLL, GLC,  x ,  x , 2012)
  EXT(ARB_robustness                          , dummy_true                      
       , GLL, GLC,  x ,  x , 2010)
  EXT(ARB_sample_shading                      , ARB_sample_shading              
       , GLL, GLC,  x ,  x , 2009)
  EXT(ARB_sampler_objects                     , dummy_true                      
       , GLL, GLC,  x ,  x , 2009)
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index b2060c2..bf0773e 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -3817,6 +3817,7 @@ struct gl_extensions
     GLboolean ARB_pipeline_statistics_query;
     GLboolean ARB_point_sprite;
     GLboolean ARB_query_buffer_object;
+   GLboolean ARB_robust_buffer_access_behavior;
     GLboolean ARB_sample_shading;
     GLboolean ARB_seamless_cube_map;
     GLboolean ARB_shader_atomic_counter_ops;
diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index 2af3653..b9c1bcb 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -361,7 +361,7 @@ compute_version(const struct gl_extensions *extensions,
                           extensions->ARB_fragment_layer_viewport &&
                           extensions->ARB_framebuffer_no_attachments &&
                           extensions->ARB_internalformat_query2 &&
-                         /* extensions->ARB_robust_buffer_access_behavior */ 0 
&&
+                         extensions->ARB_robust_buffer_access_behavior &&
                           extensions->ARB_shader_image_size &&
                           extensions->ARB_shader_storage_buffer_object &&
                           extensions->ARB_stencil_texturing &&
diff --git a/src/mesa/state_tracker/st_extensions.c 
b/src/mesa/state_tracker/st_extensions.c
index 7bbe87d..b5f744b 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -577,6 +577,7 @@ void st_init_extensions(struct pipe_screen *screen,
        { o(ARB_pipeline_statistics_query),    
PIPE_CAP_QUERY_PIPELINE_STATISTICS        },
        { o(ARB_point_sprite),                 PIPE_CAP_POINT_SPRITE            
         },
        { o(ARB_query_buffer_object),          PIPE_CAP_QUERY_BUFFER_OBJECT     
         },
+      { o(ARB_robust_buffer_access_behavior), PIPE_CAP_ROBUST_BUFFER_ACCESS    
        },
        { o(ARB_sample_shading),               PIPE_CAP_SAMPLE_SHADING          
         },
        { o(ARB_seamless_cube_map),            PIPE_CAP_SEAMLESS_CUBE_MAP       
         },
        { o(ARB_shader_draw_parameters),       PIPE_CAP_DRAW_PARAMETERS         
         },

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to