Mesa (master): i965/gen9: use an unreserved surface alignment value

2015-07-01 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 2c8f251369072ce382f651ba73ca280517d26e7f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2c8f251369072ce382f651ba73ca280517d26e7f

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Wed Jun 24 10:59:13 2015 -0700

i965/gen9: use an unreserved surface alignment value

Although the horizontal and vertical alignment fields are ignored here,
0 is a reserved value for them and may cause undefined behavior. Change
the default value to an abitrary valid one.

v2: add comment about chosen value (Topi).

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/drivers/dri/i965/gen8_surface_state.c |8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen8_surface_state.c 
b/src/mesa/drivers/dri/i965/gen8_surface_state.c
index b2d1a57..bd3eb00 100644
--- a/src/mesa/drivers/dri/i965/gen8_surface_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_surface_state.c
@@ -88,12 +88,12 @@ vertical_alignment(const struct brw_context *brw,
uint32_t surf_type)
 {
/* On Gen9+ vertical alignment is ignored for 1D surfaces and when
-* tr_mode is not TRMODE_NONE.
+* tr_mode is not TRMODE_NONE. Set to an arbitrary non-reserved value.
 */
if (brw-gen  8 
(mt-tr_mode != INTEL_MIPTREE_TRMODE_NONE ||
 surf_type == BRW_SURFACE_1D))
-  return 0;
+  return GEN8_SURFACE_VALIGN_4;
 
switch (mt-align_h) {
case 4:
@@ -113,12 +113,12 @@ horizontal_alignment(const struct brw_context *brw,
  uint32_t surf_type)
 {
/* On Gen9+ horizontal alignment is ignored when tr_mode is not
-* TRMODE_NONE.
+* TRMODE_NONE. Set to an arbitrary non-reserved value.
 */
if (brw-gen  8 
(mt-tr_mode != INTEL_MIPTREE_TRMODE_NONE ||
 gen9_use_linear_1d_layout(brw, mt)))
-  return 0;
+  return GEN8_SURFACE_HALIGN_4;
 
switch (mt-align_w) {
case 4:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/teximage: report the correct function which triggered the error

2015-08-12 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 91698d1206b86ef1710291213145275a2dd06dd7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=91698d1206b86ef1710291213145275a2dd06dd7

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Fri Aug  7 16:37:47 2015 -0700

mesa/teximage: report the correct function which triggered the error

This function would always report that a dimension or size error occurred
in glTexImage even when it was called from glCompressedTexImage. Replace
the static string with the dynamically determined caller name.

Reviewed-by: Tapani Palli tapani.pa...@intel.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/teximage.c |8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index fc69387..d35dc12 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -3336,15 +3336,15 @@ teximage(struct gl_context *ctx, GLboolean compressed, 
GLuint dims,
 
   if (!dimensionsOK) {
  _mesa_error(ctx, GL_INVALID_VALUE,
- glTexImage%uD(invalid width or height or depth),
- dims);
+ %s%uD(invalid width or height or depth),
+ func, dims);
  return;
   }
 
   if (!sizeOK) {
  _mesa_error(ctx, GL_OUT_OF_MEMORY,
- glTexImage%uD(image too large: %d x %d x %d, %s format),
- dims, width, height, depth,
+ %s%uD(image too large: %d x %d x %d, %s format),
+ func, dims, width, height, depth,
  _mesa_enum_to_string(internalFormat));
  return;
   }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/formats: add more MESA_FORMAT_LAYOUTs

2015-08-19 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 0872b042b13388bc870a3acf167a6ce692b734dd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0872b042b13388bc870a3acf167a6ce692b734dd

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Fri Aug  7 14:36:23 2015 -0700

mesa/formats: add more MESA_FORMAT_LAYOUTs

Add the classes of compressed formats as layouts. This allows the detection
of compressed formats belonging to a certain category of compressed formats.

v2. simplify layout name construction (Ilia).

Reviewed-by: Chad Versace chad.vers...@intel.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/format_info.py |   10 +-
 src/mesa/main/formats.c  |6 ++
 src/mesa/main/formats.h  |6 ++
 src/mesa/main/texcompress.c  |   30 ++
 4 files changed, 19 insertions(+), 33 deletions(-)

diff --git a/src/mesa/main/format_info.py b/src/mesa/main/format_info.py
index 3bae57e..c249e73 100644
--- a/src/mesa/main/format_info.py
+++ b/src/mesa/main/format_info.py
@@ -98,14 +98,6 @@ def get_gl_data_type(fmat):
else:
   assert False
 
-def get_mesa_layout(fmat):
-   if fmat.layout == 'array':
-  return 'MESA_FORMAT_LAYOUT_ARRAY'
-   elif fmat.layout == 'packed':
-  return 'MESA_FORMAT_LAYOUT_PACKED'
-   else:
-  return 'MESA_FORMAT_LAYOUT_OTHER'
-
 def get_channel_bits(fmat, chan_name):
if fmat.is_compressed():
   # These values are pretty-much bogus, but OpenGL requires that we
@@ -179,7 +171,7 @@ for fmat in formats:
print '   {'
print '  {0},'.format(fmat.name)
print '  {0},'.format(fmat.name)
-   print '  {0},'.format(get_mesa_layout(fmat))
+   print '  {0},'.format('MESA_FORMAT_LAYOUT_' + fmat.layout.upper())
print '  {0},'.format(get_gl_base_format(fmat))
print '  {0},'.format(get_gl_data_type(fmat))
 
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index d7b2bae..8c7e6ad 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -188,6 +188,12 @@ _mesa_get_format_max_bits(mesa_format format)
  * The return value will be one of:
  *MESA_FORMAT_LAYOUT_ARRAY
  *MESA_FORMAT_LAYOUT_PACKED
+ *MESA_FORMAT_LAYOUT_S3TC
+ *MESA_FORMAT_LAYOUT_RGTC
+ *MESA_FORMAT_LAYOUT_FXT1
+ *MESA_FORMAT_LAYOUT_ETC1
+ *MESA_FORMAT_LAYOUT_ETC2
+ *MESA_FORMAT_LAYOUT_BPTC
  *MESA_FORMAT_LAYOUT_OTHER
  */
 extern enum mesa_format_layout
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index d938e6a..d267d3b 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -64,6 +64,12 @@ extern C {
 enum mesa_format_layout {
MESA_FORMAT_LAYOUT_ARRAY,
MESA_FORMAT_LAYOUT_PACKED,
+   MESA_FORMAT_LAYOUT_S3TC,
+   MESA_FORMAT_LAYOUT_RGTC,
+   MESA_FORMAT_LAYOUT_FXT1,
+   MESA_FORMAT_LAYOUT_ETC1,
+   MESA_FORMAT_LAYOUT_ETC2,
+   MESA_FORMAT_LAYOUT_BPTC,
MESA_FORMAT_LAYOUT_OTHER,
 };
 
diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
index 0fd1a36..edfb036 100644
--- a/src/mesa/main/texcompress.c
+++ b/src/mesa/main/texcompress.c
@@ -586,34 +586,16 @@ _mesa_compressed_image_address(GLint col, GLint row, 
GLint img,
 compressed_fetch_func
 _mesa_get_compressed_fetch_func(mesa_format format)
 {
-   switch (format) {
-   case MESA_FORMAT_RGB_DXT1:
-   case MESA_FORMAT_RGBA_DXT1:
-   case MESA_FORMAT_RGBA_DXT3:
-   case MESA_FORMAT_RGBA_DXT5:
-   case MESA_FORMAT_SRGB_DXT1:
-   case MESA_FORMAT_SRGBA_DXT1:
-   case MESA_FORMAT_SRGBA_DXT3:
-   case MESA_FORMAT_SRGBA_DXT5:
+   switch (_mesa_get_format_layout(format)) {
+   case MESA_FORMAT_LAYOUT_S3TC:
   return _mesa_get_dxt_fetch_func(format);
-   case MESA_FORMAT_RGB_FXT1:
-   case MESA_FORMAT_RGBA_FXT1:
+   case MESA_FORMAT_LAYOUT_FXT1:
   return _mesa_get_fxt_fetch_func(format);
-   case MESA_FORMAT_R_RGTC1_UNORM:
-   case MESA_FORMAT_L_LATC1_UNORM:
-   case MESA_FORMAT_R_RGTC1_SNORM:
-   case MESA_FORMAT_L_LATC1_SNORM:
-   case MESA_FORMAT_RG_RGTC2_UNORM:
-   case MESA_FORMAT_LA_LATC2_UNORM:
-   case MESA_FORMAT_RG_RGTC2_SNORM:
-   case MESA_FORMAT_LA_LATC2_SNORM:
+   case MESA_FORMAT_LAYOUT_RGTC:
   return _mesa_get_compressed_rgtc_func(format);
-   case MESA_FORMAT_ETC1_RGB8:
+   case MESA_FORMAT_LAYOUT_ETC1:
   return _mesa_get_etc_fetch_func(format);
-   case MESA_FORMAT_BPTC_RGBA_UNORM:
-   case MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM:
-   case MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT:
-   case MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT:
+   case MESA_FORMAT_LAYOUT_BPTC:
   return _mesa_get_bptc_fetch_func(format);
default:
   return NULL;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/formats: refactor by collapsing cases in switch statement by type

2015-08-19 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: ffe6c6ad5f719dedd1b6b95e8590e3f20b23d340
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ffe6c6ad5f719dedd1b6b95e8590e3f20b23d340

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Tue Aug 11 11:56:35 2015 -0700

mesa/formats: refactor by collapsing cases in switch statement by type

Combine the adjacent cases which have the same GL type in the switch statemnt.

Reviewed-by: Chad Versace chad.vers...@intel.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/formats.c |  152 ++-
 1 file changed, 17 insertions(+), 135 deletions(-)

diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 8c7e6ad..a55341d 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -1013,13 +1013,10 @@ _mesa_format_to_type_and_comps(mesa_format format,
case MESA_FORMAT_R8G8B8X8_UNORM:
case MESA_FORMAT_B8G8R8X8_UNORM:
case MESA_FORMAT_X8R8G8B8_UNORM:
-  *datatype = GL_UNSIGNED_BYTE;
-  *comps = 4;
-  return;
case MESA_FORMAT_BGR_UNORM8:
case MESA_FORMAT_RGB_UNORM8:
   *datatype = GL_UNSIGNED_BYTE;
-  *comps = 3;
+  *comps = _mesa_format_num_components(format);
   return;
case MESA_FORMAT_B5G6R5_UNORM:
case MESA_FORMAT_R5G6B5_UNORM:
@@ -1068,16 +1065,12 @@ _mesa_format_to_type_and_comps(mesa_format format,
case MESA_FORMAT_A16L16_UNORM:
case MESA_FORMAT_R16G16_UNORM:
case MESA_FORMAT_G16R16_UNORM:
-  *datatype = GL_UNSIGNED_SHORT;
-  *comps = 2;
-  return;
-
case MESA_FORMAT_R_UNORM16:
case MESA_FORMAT_A_UNORM16:
case MESA_FORMAT_L_UNORM16:
case MESA_FORMAT_I_UNORM16:
   *datatype = GL_UNSIGNED_SHORT;
-  *comps = 1;
+  *comps = _mesa_format_num_components(format);
   return;
 
case MESA_FORMAT_R3G3B2_UNORM:
@@ -1085,10 +1078,6 @@ _mesa_format_to_type_and_comps(mesa_format format,
   *comps = 3;
   return;
case MESA_FORMAT_A4B4G4R4_UNORM:
-  *datatype = GL_UNSIGNED_SHORT_4_4_4_4;
-  *comps = 4;
-  return;
-
case MESA_FORMAT_R4G4B4A4_UNORM:
   *datatype = GL_UNSIGNED_SHORT_4_4_4_4;
   *comps = 4;
@@ -1099,9 +1088,6 @@ _mesa_format_to_type_and_comps(mesa_format format,
   return;
case MESA_FORMAT_A2B10G10R10_UNORM:
case MESA_FORMAT_A2B10G10R10_UINT:
-  *datatype = GL_UNSIGNED_INT_10_10_10_2;
-  *comps = 4;
-  return;
case MESA_FORMAT_A2R10G10B10_UNORM:
case MESA_FORMAT_A2R10G10B10_UINT:
   *datatype = GL_UNSIGNED_INT_10_10_10_2;
@@ -1144,15 +1130,7 @@ _mesa_format_to_type_and_comps(mesa_format format,
   return;
 
case MESA_FORMAT_Z24_UNORM_X8_UINT:
-  *datatype = GL_UNSIGNED_INT;
-  *comps = 1;
-  return;
-
case MESA_FORMAT_X8_UINT_Z24_UNORM:
-  *datatype = GL_UNSIGNED_INT;
-  *comps = 1;
-  return;
-
case MESA_FORMAT_Z_UNORM32:
   *datatype = GL_UNSIGNED_INT;
   *comps = 1;
@@ -1172,20 +1150,14 @@ _mesa_format_to_type_and_comps(mesa_format format,
case MESA_FORMAT_A_SNORM8:
case MESA_FORMAT_L_SNORM8:
case MESA_FORMAT_I_SNORM8:
-  *datatype = GL_BYTE;
-  *comps = 1;
-  return;
case MESA_FORMAT_R8G8_SNORM:
case MESA_FORMAT_L8A8_SNORM:
case MESA_FORMAT_A8L8_SNORM:
-  *datatype = GL_BYTE;
-  *comps = 2;
-  return;
case MESA_FORMAT_A8B8G8R8_SNORM:
case MESA_FORMAT_R8G8B8A8_SNORM:
case MESA_FORMAT_X8B8G8R8_SNORM:
   *datatype = GL_BYTE;
-  *comps = 4;
+  *comps = _mesa_format_num_components(format);
   return;
 
case MESA_FORMAT_RGBA_UNORM16:
@@ -1197,42 +1169,24 @@ _mesa_format_to_type_and_comps(mesa_format format,
case MESA_FORMAT_A_SNORM16:
case MESA_FORMAT_L_SNORM16:
case MESA_FORMAT_I_SNORM16:
-  *datatype = GL_SHORT;
-  *comps = 1;
-  return;
case MESA_FORMAT_R16G16_SNORM:
case MESA_FORMAT_LA_SNORM16:
-  *datatype = GL_SHORT;
-  *comps = 2;
-  return;
case MESA_FORMAT_RGB_SNORM16:
-  *datatype = GL_SHORT;
-  *comps = 3;
-  return;
case MESA_FORMAT_RGBA_SNORM16:
   *datatype = GL_SHORT;
-  *comps = 4;
+  *comps = _mesa_format_num_components(format);
   return;
 
case MESA_FORMAT_BGR_SRGB8:
-  *datatype = GL_UNSIGNED_BYTE;
-  *comps = 3;
-  return;
case MESA_FORMAT_A8B8G8R8_SRGB:
case MESA_FORMAT_B8G8R8A8_SRGB:
case MESA_FORMAT_A8R8G8B8_SRGB:
case MESA_FORMAT_R8G8B8A8_SRGB:
-  *datatype = GL_UNSIGNED_BYTE;
-  *comps = 4;
-  return;
case MESA_FORMAT_L_SRGB8:
-  *datatype = GL_UNSIGNED_BYTE;
-  *comps = 1;
-  return;
case MESA_FORMAT_L8A8_SRGB:
case MESA_FORMAT_A8L8_SRGB:
   *datatype = GL_UNSIGNED_BYTE;
-  *comps = 2;
+  *comps = _mesa_format_num_components(format);
   return;
 
case MESA_FORMAT_RGB_FXT1:
@@ -1317,166 +1271,94 @@ _mesa_format_to_type_and_comps(mesa_format format,
case MESA_FORMAT_A_UINT8:
case

Mesa (master): mesa/formats: only do type and component lookup for uncompressed formats

2015-08-24 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 9f00af672b59766008994a190730d48ae03773dd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9f00af672b59766008994a190730d48ae03773dd

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Fri Jul 31 09:25:56 2015 -0700

mesa/formats: only do type and component lookup for uncompressed formats

Only uncompressed formats have a non-void type and actual
components per pixel. Rename _mesa_format_to_type_and_comps
to _mesa_uncompressed_format_to_type_and_comps and require
callers to check if the format is not compressed.

v2. include compressed format cases to avoid gcc warnings (Chad).

Reviewed-by: Chad Versace chad.vers...@intel.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/format_utils.c |2 +-
 src/mesa/main/formats.c  |   89 --
 src/mesa/main/formats.h  |2 +-
 src/mesa/main/mipmap.c   |2 +-
 4 files changed, 46 insertions(+), 49 deletions(-)

diff --git a/src/mesa/main/format_utils.c b/src/mesa/main/format_utils.c
index 810bb16..5fdabd5 100644
--- a/src/mesa/main/format_utils.c
+++ b/src/mesa/main/format_utils.c
@@ -602,7 +602,7 @@ _mesa_format_to_array(mesa_format format, GLenum *type, int 
*num_components,
 
*normalized = !_mesa_is_format_integer(format);
 
-   _mesa_format_to_type_and_comps(format, type, format_components);
+   _mesa_uncompressed_format_to_type_and_comps(format, type, 
format_components);
 
switch (_mesa_get_format_layout(format)) {
case MESA_FORMAT_LAYOUT_ARRAY:
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 8c7e6ad..673c6b9 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -885,9 +885,9 @@ _mesa_format_row_stride(mesa_format format, GLsizei width)
 
 
 /**
- * Debug/test: check that all formats are handled in the
- * _mesa_format_to_type_and_comps() function.  When new pixel formats
- * are added to Mesa, that function needs to be updated.
+ * Debug/test: check that all uncompressed formats are handled in the
+ * _mesa_uncompressed_format_to_type_and_comps() function. When new pixel
+ * formats are added to Mesa, that function needs to be updated.
  * This is a no-op after the first call.
  */
 static void
@@ -901,7 +901,8 @@ check_format_to_type_and_comps(void)
   /* This function will emit a problem/warning if the format is
* not handled.
*/
-  _mesa_format_to_type_and_comps(f, datatype, comps);
+  if (!_mesa_is_format_compressed(f))
+ _mesa_uncompressed_format_to_type_and_comps(f, datatype, comps);
}
 }
 
@@ -997,11 +998,11 @@ _mesa_test_formats(void)
 
 
 /**
- * Return datatype and number of components per texel for the given 
mesa_format.
- * Only used for mipmap generation code.
+ * Return datatype and number of components per texel for the given
+ * uncompressed mesa_format. Only used for mipmap generation code.
  */
 void
-_mesa_format_to_type_and_comps(mesa_format format,
+_mesa_uncompressed_format_to_type_and_comps(mesa_format format,
GLenum *datatype, GLuint *comps)
 {
switch (format) {
@@ -1235,44 +1236,6 @@ _mesa_format_to_type_and_comps(mesa_format format,
   *comps = 2;
   return;
 
-   case MESA_FORMAT_RGB_FXT1:
-   case MESA_FORMAT_RGBA_FXT1:
-   case MESA_FORMAT_RGB_DXT1:
-   case MESA_FORMAT_RGBA_DXT1:
-   case MESA_FORMAT_RGBA_DXT3:
-   case MESA_FORMAT_RGBA_DXT5:
-   case MESA_FORMAT_SRGB_DXT1:
-   case MESA_FORMAT_SRGBA_DXT1:
-   case MESA_FORMAT_SRGBA_DXT3:
-   case MESA_FORMAT_SRGBA_DXT5:
-   case MESA_FORMAT_R_RGTC1_UNORM:
-   case MESA_FORMAT_R_RGTC1_SNORM:
-   case MESA_FORMAT_RG_RGTC2_UNORM:
-   case MESA_FORMAT_RG_RGTC2_SNORM:
-   case MESA_FORMAT_L_LATC1_UNORM:
-   case MESA_FORMAT_L_LATC1_SNORM:
-   case MESA_FORMAT_LA_LATC2_UNORM:
-   case MESA_FORMAT_LA_LATC2_SNORM:
-   case MESA_FORMAT_ETC1_RGB8:
-   case MESA_FORMAT_ETC2_RGB8:
-   case MESA_FORMAT_ETC2_SRGB8:
-   case MESA_FORMAT_ETC2_RGBA8_EAC:
-   case MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC:
-   case MESA_FORMAT_ETC2_R11_EAC:
-   case MESA_FORMAT_ETC2_RG11_EAC:
-   case MESA_FORMAT_ETC2_SIGNED_R11_EAC:
-   case MESA_FORMAT_ETC2_SIGNED_RG11_EAC:
-   case MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1:
-   case MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1:
-   case MESA_FORMAT_BPTC_RGBA_UNORM:
-   case MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM:
-   case MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT:
-   case MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT:
-  /* XXX generate error instead? */
-  *datatype = GL_UNSIGNED_BYTE;
-  *comps = 0;
-  return;
-
case MESA_FORMAT_RGBA_FLOAT32:
   *datatype = GL_FLOAT;
   *comps = 4;
@@ -1571,12 +1534,46 @@ _mesa_format_to_type_and_comps(mesa_format format,
   assert(0);
   return;
 
+   case MESA_FORMAT_RGB_FXT1:
+   case MESA_FORMAT_RGBA_FXT1:
+   case MESA_FORMAT_RGB_DXT1:
+   case MESA_FORMAT_RGBA_DXT1:
+   case MESA_FORMAT_RGBA_DXT3:
+   case MESA_FORMAT_RGBA_DXT5:
+   case

Mesa (master): Revert mesa/formats: refactor by collapsing cases in switch statement by type

2015-08-20 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 29e953b07b8c1e4d27f53c4a1430154a3d67f896
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=29e953b07b8c1e4d27f53c4a1430154a3d67f896

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Thu Aug 20 18:00:20 2015 -0700

Revert mesa/formats: refactor by collapsing cases in switch statement by type

This reverts commit ffe6c6ad5f719dedd1b6b95e8590e3f20b23d340.

_mesa_format_num_components() does not include the padding bits in mesa formats
containing 'X' channels. This could cause mipmap generation for certain
uncompressed formats to underestimate the number of channels in the source
image by 1.

Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/formats.c |  152 +--
 1 file changed, 135 insertions(+), 17 deletions(-)

diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index a55341d..8c7e6ad 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -1013,10 +1013,13 @@ _mesa_format_to_type_and_comps(mesa_format format,
case MESA_FORMAT_R8G8B8X8_UNORM:
case MESA_FORMAT_B8G8R8X8_UNORM:
case MESA_FORMAT_X8R8G8B8_UNORM:
+  *datatype = GL_UNSIGNED_BYTE;
+  *comps = 4;
+  return;
case MESA_FORMAT_BGR_UNORM8:
case MESA_FORMAT_RGB_UNORM8:
   *datatype = GL_UNSIGNED_BYTE;
-  *comps = _mesa_format_num_components(format);
+  *comps = 3;
   return;
case MESA_FORMAT_B5G6R5_UNORM:
case MESA_FORMAT_R5G6B5_UNORM:
@@ -1065,12 +1068,16 @@ _mesa_format_to_type_and_comps(mesa_format format,
case MESA_FORMAT_A16L16_UNORM:
case MESA_FORMAT_R16G16_UNORM:
case MESA_FORMAT_G16R16_UNORM:
+  *datatype = GL_UNSIGNED_SHORT;
+  *comps = 2;
+  return;
+
case MESA_FORMAT_R_UNORM16:
case MESA_FORMAT_A_UNORM16:
case MESA_FORMAT_L_UNORM16:
case MESA_FORMAT_I_UNORM16:
   *datatype = GL_UNSIGNED_SHORT;
-  *comps = _mesa_format_num_components(format);
+  *comps = 1;
   return;
 
case MESA_FORMAT_R3G3B2_UNORM:
@@ -1078,6 +1085,10 @@ _mesa_format_to_type_and_comps(mesa_format format,
   *comps = 3;
   return;
case MESA_FORMAT_A4B4G4R4_UNORM:
+  *datatype = GL_UNSIGNED_SHORT_4_4_4_4;
+  *comps = 4;
+  return;
+
case MESA_FORMAT_R4G4B4A4_UNORM:
   *datatype = GL_UNSIGNED_SHORT_4_4_4_4;
   *comps = 4;
@@ -1088,6 +1099,9 @@ _mesa_format_to_type_and_comps(mesa_format format,
   return;
case MESA_FORMAT_A2B10G10R10_UNORM:
case MESA_FORMAT_A2B10G10R10_UINT:
+  *datatype = GL_UNSIGNED_INT_10_10_10_2;
+  *comps = 4;
+  return;
case MESA_FORMAT_A2R10G10B10_UNORM:
case MESA_FORMAT_A2R10G10B10_UINT:
   *datatype = GL_UNSIGNED_INT_10_10_10_2;
@@ -1130,7 +1144,15 @@ _mesa_format_to_type_and_comps(mesa_format format,
   return;
 
case MESA_FORMAT_Z24_UNORM_X8_UINT:
+  *datatype = GL_UNSIGNED_INT;
+  *comps = 1;
+  return;
+
case MESA_FORMAT_X8_UINT_Z24_UNORM:
+  *datatype = GL_UNSIGNED_INT;
+  *comps = 1;
+  return;
+
case MESA_FORMAT_Z_UNORM32:
   *datatype = GL_UNSIGNED_INT;
   *comps = 1;
@@ -1150,14 +1172,20 @@ _mesa_format_to_type_and_comps(mesa_format format,
case MESA_FORMAT_A_SNORM8:
case MESA_FORMAT_L_SNORM8:
case MESA_FORMAT_I_SNORM8:
+  *datatype = GL_BYTE;
+  *comps = 1;
+  return;
case MESA_FORMAT_R8G8_SNORM:
case MESA_FORMAT_L8A8_SNORM:
case MESA_FORMAT_A8L8_SNORM:
+  *datatype = GL_BYTE;
+  *comps = 2;
+  return;
case MESA_FORMAT_A8B8G8R8_SNORM:
case MESA_FORMAT_R8G8B8A8_SNORM:
case MESA_FORMAT_X8B8G8R8_SNORM:
   *datatype = GL_BYTE;
-  *comps = _mesa_format_num_components(format);
+  *comps = 4;
   return;
 
case MESA_FORMAT_RGBA_UNORM16:
@@ -1169,24 +1197,42 @@ _mesa_format_to_type_and_comps(mesa_format format,
case MESA_FORMAT_A_SNORM16:
case MESA_FORMAT_L_SNORM16:
case MESA_FORMAT_I_SNORM16:
+  *datatype = GL_SHORT;
+  *comps = 1;
+  return;
case MESA_FORMAT_R16G16_SNORM:
case MESA_FORMAT_LA_SNORM16:
+  *datatype = GL_SHORT;
+  *comps = 2;
+  return;
case MESA_FORMAT_RGB_SNORM16:
+  *datatype = GL_SHORT;
+  *comps = 3;
+  return;
case MESA_FORMAT_RGBA_SNORM16:
   *datatype = GL_SHORT;
-  *comps = _mesa_format_num_components(format);
+  *comps = 4;
   return;
 
case MESA_FORMAT_BGR_SRGB8:
+  *datatype = GL_UNSIGNED_BYTE;
+  *comps = 3;
+  return;
case MESA_FORMAT_A8B8G8R8_SRGB:
case MESA_FORMAT_B8G8R8A8_SRGB:
case MESA_FORMAT_A8R8G8B8_SRGB:
case MESA_FORMAT_R8G8B8A8_SRGB:
+  *datatype = GL_UNSIGNED_BYTE;
+  *comps = 4;
+  return;
case MESA_FORMAT_L_SRGB8:
+  *datatype = GL_UNSIGNED_BYTE;
+  *comps = 1;
+  return;
case MESA_FORMAT_L8A8_SRGB:
case MESA_FORMAT_A8L8_SRGB:
   *datatype = GL_UNSIGNED_BYTE;
-  *comps = _mesa_format_num_components(format

Mesa (master): mesa/formats: store whether or not a format is sRGB in gl_format_info

2015-08-24 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 8f378d1083179ea9e760688582faf95aea880b94
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8f378d1083179ea9e760688582faf95aea880b94

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Tue May 19 09:58:17 2015 -0700

mesa/formats: store whether or not a format is sRGB in gl_format_info

v2: remove extra newline.
v3: use bool instead of GLboolean.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/format_info.py |2 ++
 src/mesa/main/formats.c  |   28 
 2 files changed, 6 insertions(+), 24 deletions(-)

diff --git a/src/mesa/main/format_info.py b/src/mesa/main/format_info.py
index c249e73..839d407 100644
--- a/src/mesa/main/format_info.py
+++ b/src/mesa/main/format_info.py
@@ -180,6 +180,8 @@ for fmat in formats:
bits = [ get_channel_bits(fmat, name) for name in ['l', 'i', 'z', 's']]
print '  {0},'.format(', '.join(map(str, bits)))
 
+   print '  {0:d},'.format(fmat.colorspace == 'srgb')
+
print '  {0}, {1}, {2},'.format(fmat.block_width, fmat.block_height,
int(fmat.block_size() / 8))
 
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 673c6b9..5e1d9a6 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -65,6 +65,8 @@ struct gl_format_info
GLubyte DepthBits;
GLubyte StencilBits;
 
+   bool IsSRGBFormat;
+
/**
 * To describe compressed formats.  If not compressed, Width=Height=1.
 */
@@ -568,30 +570,8 @@ _mesa_is_format_color_format(mesa_format format)
 GLenum
 _mesa_get_format_color_encoding(mesa_format format)
 {
-   /* XXX this info should be encoded in gl_format_info */
-   switch (format) {
-   case MESA_FORMAT_BGR_SRGB8:
-   case MESA_FORMAT_A8B8G8R8_SRGB:
-   case MESA_FORMAT_B8G8R8A8_SRGB:
-   case MESA_FORMAT_A8R8G8B8_SRGB:
-   case MESA_FORMAT_R8G8B8A8_SRGB:
-   case MESA_FORMAT_L_SRGB8:
-   case MESA_FORMAT_L8A8_SRGB:
-   case MESA_FORMAT_A8L8_SRGB:
-   case MESA_FORMAT_SRGB_DXT1:
-   case MESA_FORMAT_SRGBA_DXT1:
-   case MESA_FORMAT_SRGBA_DXT3:
-   case MESA_FORMAT_SRGBA_DXT5:
-   case MESA_FORMAT_R8G8B8X8_SRGB:
-   case MESA_FORMAT_ETC2_SRGB8:
-   case MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC:
-   case MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1:
-   case MESA_FORMAT_B8G8R8X8_SRGB:
-   case MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM:
-  return GL_SRGB;
-   default:
-  return GL_LINEAR;
-   }
+   const struct gl_format_info *info = _mesa_get_format_info(format);
+   return info-IsSRGBFormat ? GL_SRGB : GL_LINEAR;
 }
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/glformats: Undo code changes from _mesa_base_tex_format() move

2015-10-21 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: f1147a238ab35a56fa7d1c64f6025ff3b909dad8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1147a238ab35a56fa7d1c64f6025ff3b909dad8

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Oct  8 16:44:30 2015 -0700

mesa/glformats: Undo code changes from _mesa_base_tex_format() move

The refactoring commit, c6bf1cd, accidentally reverted cd49b97
and 99b1f47. These changes caused more code to be added to the
function and removed the existing support for ASTC. This patch
reverts those modifications.

v2. Actually include ASTC support again.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92221
Cc: "11.0" <mesa-sta...@lists.freedesktop.org>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 src/mesa/main/glformats.c |  149 +++--
 1 file changed, 8 insertions(+), 141 deletions(-)

diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index faa6382..2ed42ea 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -2275,45 +2275,16 @@ _mesa_base_tex_format(const struct gl_context *ctx, 
GLint internalFormat)
   ; /* fallthrough */
}
 
-   if (ctx->Extensions.TDFX_texture_compression_FXT1) {
-  switch (internalFormat) {
-  case GL_COMPRESSED_RGB_FXT1_3DFX:
- return GL_RGB;
-  case GL_COMPRESSED_RGBA_FXT1_3DFX:
- return GL_RGBA;
-  default:
- ; /* fallthrough */
-  }
+   if (_mesa_is_compressed_format(ctx, internalFormat)) {
+  GLenum base_compressed =
+ _mesa_gl_compressed_format_base_format(internalFormat);
+  if (base_compressed)
+return base_compressed;
}
 
-   /* Assume that the ANGLE flag will always be set if the EXT flag is set.
-*/
-   if (ctx->Extensions.ANGLE_texture_compression_dxt) {
-  switch (internalFormat) {
-  case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
- return GL_RGB;
-  case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-  case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
-  case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
- return GL_RGBA;
-  default:
- ; /* fallthrough */
-  }
-   }
-
-   if (_mesa_is_desktop_gl(ctx)
-   && ctx->Extensions.ANGLE_texture_compression_dxt) {
-  switch (internalFormat) {
-  case GL_RGB_S3TC:
-  case GL_RGB4_S3TC:
- return GL_RGB;
-  case GL_RGBA_S3TC:
-  case GL_RGBA4_S3TC:
- return GL_RGBA;
-  default:
- ; /* fallthrough */
-  }
-   }
+   if (ctx->Extensions.KHR_texture_compression_astc_ldr &&
+  _mesa_is_astc_format(internalFormat))
+return GL_RGBA;
 
if (ctx->Extensions.MESA_ycbcr_texture) {
   if (internalFormat == GL_YCBCR_MESA)
@@ -2390,16 +2361,10 @@ _mesa_base_tex_format(const struct gl_context *ctx, 
GLint internalFormat)
   case GL_SRGB8_EXT:
   case GL_COMPRESSED_SRGB_EXT:
  return GL_RGB;
-  case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
- return ctx->Extensions.EXT_texture_compression_s3tc ? GL_RGB : -1;
   case GL_SRGB_ALPHA_EXT:
   case GL_SRGB8_ALPHA8_EXT:
   case GL_COMPRESSED_SRGB_ALPHA_EXT:
  return GL_RGBA;
-  case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
-  case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
-  case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
- return ctx->Extensions.EXT_texture_compression_s3tc ? GL_RGBA : -1;
   case GL_SLUMINANCE_ALPHA_EXT:
   case GL_SLUMINANCE8_ALPHA8_EXT:
   case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
@@ -2544,104 +2509,6 @@ _mesa_base_tex_format(const struct gl_context *ctx, 
GLint internalFormat)
   }
}
 
-   if (ctx->Extensions.ARB_texture_compression_rgtc) {
-  switch (internalFormat) {
-  case GL_COMPRESSED_RED_RGTC1:
-  case GL_COMPRESSED_SIGNED_RED_RGTC1:
- return GL_RED;
-  case GL_COMPRESSED_RG_RGTC2:
-  case GL_COMPRESSED_SIGNED_RG_RGTC2:
- return GL_RG;
-  default:
- ; /* fallthrough */
-  }
-   }
-
-   if (ctx->Extensions.EXT_texture_compression_latc) {
-  switch (internalFormat) {
-  case GL_COMPRESSED_LUMINANCE_LATC1_EXT:
-  case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT:
- return GL_LUMINANCE;
-  case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT:
-  case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT:
- return GL_LUMINANCE_ALPHA;
-  default:
- ; /* fallthrough */
-  }
-   }
-
-   if (ctx->Extensions.ATI_texture_compression_3dc) {
-  switch (internalFormat) {
-  case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:
- return GL_LUMINANCE_ALPHA;
-  default:
- ; /* fallthrough */
-  }
-   }
-
-   if (ctx->Extensions.OES_compressed_ETC1_RGB8_texture) {
-  switch (internalFormat) {
-  case GL_ETC1_RGB8_OES:
- return GL_RGB;
-  default

Mesa (master): mesa: Enable ASTC in GLES' [NUM_] COMPRESSED_TEXTURE_FORMATS queries

2015-10-29 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 65f6caf43e8bbea7c8a0d4e146ad7186c276ff9a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=65f6caf43e8bbea7c8a0d4e146ad7186c276ff9a

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Oct 14 14:32:43 2015 -0700

mesa: Enable ASTC in GLES' [NUM_]COMPRESSED_TEXTURE_FORMATS queries

In OpenGL ES, the COMPRESSED_TEXTURE_FORMATS query returns the set of
supported specific compressed formats. Since ASTC formats fit within
that category, include them in the set and update the
NUM_COMPRESSED_TEXTURE_FORMATS query as well.

This enables GLES2-based ASTC dEQP tests to run. See the Bugzilla for
more info.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92193
Reported-by: Tapani Pälli <tapani.pa...@intel.com>
Suggested-by: Ian Romanick <ian.d.roman...@intel.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>

---

 src/mesa/main/texcompress.c |   85 ---
 1 file changed, 63 insertions(+), 22 deletions(-)

diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
index 7fcaa42..a8ac19e 100644
--- a/src/mesa/main/texcompress.c
+++ b/src/mesa/main/texcompress.c
@@ -243,28 +243,6 @@ _mesa_gl_compressed_format_base_format(GLenum format)
  *what GL_NUM_COMPRESSED_TEXTURE_FORMATS and
  *GL_COMPRESSED_TEXTURE_FORMATS return."
  *
- * The KHR_texture_compression_astc_hdr spec says:
- *
- *"Interactions with OpenGL 4.2
- *
- *OpenGL 4.2 supports the feature that compressed textures can be
- *compressed online, by passing the compressed texture format enum as
- *the internal format when uploading a texture using TexImage1D,
- *TexImage2D or TexImage3D (see Section 3.9.3, Texture Image
- *Specification, subsection Encoding of Special Internal Formats).
- *
- *Due to the complexity of the ASTC compression algorithm, it is not
- *usually suitable for online use, and therefore ASTC support will be
- *limited to pre-compressed textures only. Where on-device compression
- *is required, a domain-specific limited compressor will typically
- *be used, and this is therefore not suitable for implementation in
- *the driver.
- *
- *In particular, the ASTC format specifiers will not be added to
- *Table 3.14, and thus will not be accepted by the TexImage*D
- *functions, and will not be returned by the (already deprecated)
- *COMPRESSED_TEXTURE_FORMATS query."
- *
  * There is no formal spec for GL_ATI_texture_compression_3dc.  Since the
  * formats added by this extension are luminance-alpha formats, it is
  * reasonable to expect them to follow the same rules as
@@ -397,6 +375,69 @@ _mesa_get_compressed_formats(struct gl_context *ctx, GLint 
*formats)
  n += 10;
   }
}
+
+   /* The KHR_texture_compression_astc_hdr spec says:
+*
+*"Interactions with OpenGL 4.2
+*
+*OpenGL 4.2 supports the feature that compressed textures can be
+*compressed online, by passing the compressed texture format enum 
as
+*the internal format when uploading a texture using TexImage1D,
+*TexImage2D or TexImage3D (see Section 3.9.3, Texture Image
+*Specification, subsection Encoding of Special Internal Formats).
+*
+*Due to the complexity of the ASTC compression algorithm, it is not
+*usually suitable for online use, and therefore ASTC support will 
be
+*limited to pre-compressed textures only. Where on-device 
compression
+*is required, a domain-specific limited compressor will typically
+*be used, and this is therefore not suitable for implementation in
+*the driver.
+*
+*In particular, the ASTC format specifiers will not be added to
+*Table 3.14, and thus will not be accepted by the TexImage*D
+*functions, and will not be returned by the (already deprecated)
+*COMPRESSED_TEXTURE_FORMATS query."
+*
+* The ES and the desktop specs diverge here. In OpenGL ES, the 
COMPRESSED_TEXTURE_FORMATS
+* query returns the set of supported specific compressed formats.
+*/
+   if (ctx->API == API_OPENGLES2 &&
+   ctx->Extensions.KHR_texture_compression_astc_ldr) {
+  if (formats) {
+ formats[n++] = GL_COMPRESSED_RGBA_ASTC_4x4_KHR;
+ formats[n++] = GL_COMPRESSED_RGBA_ASTC_5x4_KHR;
+ formats[n++] = GL_COMPRESSED_RGBA_ASTC_5x5_KHR;
+ formats[n++] = GL_COMPRESSED_RGBA_ASTC_6x5_KHR;
+ formats[n++] = GL_COMPRESSED_RGBA_ASTC_6x6_KHR;
+ formats[n++] = GL_COMPRESSED_RGBA_ASTC_8x5_KHR;
+ formats[n++] = GL_COMPRESSED_RGBA_ASTC_8x6_KHR;
+ formats[n++] = GL_COMPRESSED_RGBA_ASTC_8x8_KHR;
+

Mesa (master): mesa/texcompress: Restrict FXT1 format to desktop GL subset

2015-10-29 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 8090a1c32692e89b79d89f4dc959a26532dd2f91
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8090a1c32692e89b79d89f4dc959a26532dd2f91

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue Oct 13 21:05:07 2015 -0700

mesa/texcompress: Restrict FXT1 format to desktop GL subset

In agreement with the extension spec and commit
dd0eb004874645135b9aaac3ebbd0aaf274079ea, filter FXT1 formats to the
desktop GL profiles. Now we no longer advertise such formats as supported
in an ES context and then throw an INVALID_ENUM error when the client
tries to use such formats with CompressedTexImage2D.

Fixes the following 26 dEQP tests:
* dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_invalid_border
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_invalid_border_cube_neg_x
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_invalid_border_cube_neg_y
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_invalid_border_cube_neg_z
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_invalid_border_cube_pos_x
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_invalid_border_cube_pos_y
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_invalid_border_cube_pos_z
* dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_invalid_size
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_level_max_cube_pos
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_level_max_tex2d
* dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_neg_level_cube
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_neg_level_tex2d
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_neg_width_height_cube_neg_x
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_neg_width_height_cube_neg_y
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_neg_width_height_cube_neg_z
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_neg_width_height_cube_pos_x
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_neg_width_height_cube_pos_y
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_neg_width_height_cube_pos_z
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_neg_width_height_tex2d
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_width_height_max_cube_neg_x
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_width_height_max_cube_neg_y
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_width_height_max_cube_neg_z
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_width_height_max_cube_pos_x
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_width_height_max_cube_pos_y
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_width_height_max_cube_pos_z
* 
dEQP-GLES2.functional.negative_api.texture.compressedteximage2d_width_height_max_tex2d

v2. Use _mesa_is_desktop_gl() (Ilia, Ian)

Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/texcompress.c |3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
index 84973d3..7fcaa42 100644
--- a/src/mesa/main/texcompress.c
+++ b/src/mesa/main/texcompress.c
@@ -286,7 +286,8 @@ GLuint
 _mesa_get_compressed_formats(struct gl_context *ctx, GLint *formats)
 {
GLuint n = 0;
-   if (ctx->Extensions.TDFX_texture_compression_FXT1) {
+   if (_mesa_is_desktop_gl(ctx) &&
+   ctx->Extensions.TDFX_texture_compression_FXT1) {
   if (formats) {
  formats[n++] = GL_COMPRESSED_RGB_FXT1_3DFX;
  formats[n++] = GL_COMPRESSED_RGBA_FXT1_3DFX;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/extensions: Use _mesa_extension_supported()

2015-11-12 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: a82bc779af37334ebc874d38951324f5f0b651cd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a82bc779af37334ebc874d38951324f5f0b651cd

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue Sep  8 12:41:18 2015 -0700

mesa/extensions: Use _mesa_extension_supported()

Replace open-coded checks for extension support with
_mesa_extension_supported().

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Chad Versace <chad.vers...@intel.com>

---

 src/mesa/main/extensions.c   |   54 --
 src/mesa/main/extensions_table.h |6 ++---
 2 files changed, 14 insertions(+), 46 deletions(-)

diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 83c4921..1ce73f3 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -49,8 +49,6 @@ enum {
GL  = (1 << API_OPENGL_COMPAT) | (1 << API_OPENGL_CORE),
ES1 = 1 << API_OPENGLES,
ES2 = 1 << API_OPENGLES2,
-   ES3 = 1 << (API_OPENGL_LAST + 1),
-   ES31 = 1 << (API_OPENGL_LAST + 2),
 };
 
 /**
@@ -485,15 +483,9 @@ _mesa_make_extension_string(struct gl_context *ctx)
extension_index *extension_indices;
/* String of extra extensions. */
char *extra_extensions = get_extension_override(ctx);
-   GLboolean *base = (GLboolean *) >Extensions;
unsigned k;
unsigned j;
unsigned maxYear = ~0;
-   unsigned api_set = (1 << ctx->API);
-   if (_mesa_is_gles3(ctx))
-  api_set |= ES3;
-   if (_mesa_is_gles31(ctx))
-  api_set |= ES31;
 
/* Check if the MESA_EXTENSION_MAX_YEAR env var is set */
{
@@ -510,9 +502,8 @@ _mesa_make_extension_string(struct gl_context *ctx)
for (k = 0; k < ARRAY_SIZE(extension_table); ++k) {
   const struct extension *i = extension_table + k;
 
-  if (base[i->offset] &&
-  i->year <= maxYear &&
-  (i->api_set & api_set)) {
+  if (i->year <= maxYear &&
+  _mesa_extension_supported(ctx, k)) {
 length += strlen(i->name) + 1; /* +1 for space */
 ++count;
   }
@@ -540,11 +531,8 @@ _mesa_make_extension_string(struct gl_context *ctx)
 */
j = 0;
for (k = 0; k < ARRAY_SIZE(extension_table); ++k) {
-  const struct extension *i = extension_table + k;
-
-  if (base[i->offset] &&
-  i->year <= maxYear &&
-  (i->api_set & api_set)) {
+  if (extension_table[k].year <= maxYear &&
+ _mesa_extension_supported(ctx, k)) {
  extension_indices[j++] = k;
   }
}
@@ -555,7 +543,7 @@ _mesa_make_extension_string(struct gl_context *ctx)
/* Build the extension string.*/
for (j = 0; j < count; ++j) {
   const struct extension *i = _table[extension_indices[j]];
-  assert(base[i->offset] && (i->api_set & api_set));
+  assert(_mesa_extension_supported(ctx, extension_indices[j]));
   strcat(exts, i->name);
   strcat(exts, " ");
}
@@ -574,25 +562,15 @@ _mesa_make_extension_string(struct gl_context *ctx)
 GLuint
 _mesa_get_extension_count(struct gl_context *ctx)
 {
-   GLboolean *base;
unsigned k;
-   unsigned api_set = (1 << ctx->API);
-   if (_mesa_is_gles3(ctx))
-  api_set |= ES3;
-   if (_mesa_is_gles31(ctx))
-  api_set |= ES31;
 
/* only count once */
if (ctx->Extensions.Count != 0)
   return ctx->Extensions.Count;
 
-   base = (GLboolean *) >Extensions;
for (k = 0; k < ARRAY_SIZE(extension_table); ++k) {
-  const struct extension *i = extension_table + k;
-
-  if (base[i->offset] && (i->api_set & api_set)) {
+  if (_mesa_extension_supported(ctx, k))
 ctx->Extensions.Count++;
-  }
}
return ctx->Extensions.Count;
 }
@@ -603,23 +581,13 @@ _mesa_get_extension_count(struct gl_context *ctx)
 const GLubyte *
 _mesa_get_enabled_extension(struct gl_context *ctx, GLuint index)
 {
-   const GLboolean *base;
-   size_t n;
-   unsigned k;
-   unsigned api_set = (1 << ctx->API);
-   if (_mesa_is_gles3(ctx))
-  api_set |= ES3;
-   if (_mesa_is_gles31(ctx))
-  api_set |= ES31;
-
-   base = (GLboolean*) >Extensions;
-   n = 0;
-   for (k = 0; k < ARRAY_SIZE(extension_table); ++k) {
-  const struct extension *i = extension_table + k;
+   size_t n = 0;
+   unsigned i;
 
-  if (base[i->offset] && (i->api_set & api_set)) {
+   for (i = 0; i < ARRAY_SIZE(extension_table); ++i) {
+  if (_mesa_extension_supported(ctx, i)) {
  if (n == index)
-return (const GLubyte*) i->name;
+return (const GLubyte*) extension_table[i].name;
  else
 ++n;
   }
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 50c0d42..e5b8aa0 100644
--- a

Mesa (master): mesa: return bool instead of GLboolean in compressedteximage_only_format()

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 42ee16176dca797c395592b0245f370ea58ca3a8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=42ee16176dca797c395592b0245f370ea58ca3a8

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Wed Jun 17 17:14:40 2015 -0700

mesa: return bool instead of GLboolean in compressedteximage_only_format()

In agreement with the coding style, functions that aren't directly visible
to the GL API should prefer the use of bool over GLboolean.

Suggested-by: Ian Romanick ian.d.roman...@intel.com
Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/teximage.c |6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 0535db3..8d94903 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -1767,7 +1767,7 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, GLenum 
target, GLint level,
 /**
  * Return true if the format is only valid for glCompressedTexImage.
  */
-static GLboolean
+static bool
 compressedteximage_only_format(const struct gl_context *ctx, GLenum format)
 {
switch (format) {
@@ -1782,9 +1782,9 @@ compressedteximage_only_format(const struct gl_context 
*ctx, GLenum format)
case GL_PALETTE8_R5_G6_B5_OES:
case GL_PALETTE8_RGBA4_OES:
case GL_PALETTE8_RGB5_A1_OES:
-  return GL_TRUE;
+  return true;
default:
-  return GL_FALSE;
+  return false;
}
 }
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swrast: add a new macro, FETCH_COMPRESSED

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 9a759a6ee002203a045e9df1f91823204609fd4a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a759a6ee002203a045e9df1f91823204609fd4a

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Sun May 31 13:29:41 2015 -0700

swrast: add a new macro, FETCH_COMPRESSED

This patch creates a new macro, FETCH_COMPRESSED - similar in nature
to the other FETCH_* macros. This reduces repetition in the code that
deals with compressed textures.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/swrast/s_texfetch.c |  239 --
 1 file changed, 41 insertions(+), 198 deletions(-)

diff --git a/src/mesa/swrast/s_texfetch.c b/src/mesa/swrast/s_texfetch.c
index 754d982..acb06e6 100644
--- a/src/mesa/swrast/s_texfetch.c
+++ b/src/mesa/swrast/s_texfetch.c
@@ -116,6 +116,14 @@ static void fetch_null_texelf( const struct 
swrast_texture_image *texImage,
   NULL  \
}
 
+#define FETCH_COMPRESSED(NAME)  \
+   {\
+  MESA_FORMAT_ ## NAME, \
+  fetch_compressed, \
+  fetch_compressed, \
+  fetch_compressed  \
+   }
+
 /**
  * Table to map MESA_FORMAT_ to texel fetch/store funcs.
  */
@@ -344,214 +352,49 @@ texfetch_funcs[] =
FETCH_NULL(RGBX_SINT32),
 
/* DXT compressed formats */
-   {
-  MESA_FORMAT_RGB_DXT1,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_RGBA_DXT1,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_RGBA_DXT3,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_RGBA_DXT5,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
+   FETCH_COMPRESSED(RGB_DXT1),
+   FETCH_COMPRESSED(RGBA_DXT1),
+   FETCH_COMPRESSED(RGBA_DXT3),
+   FETCH_COMPRESSED(RGBA_DXT5),
 
/* DXT sRGB compressed formats */
-   {
-  MESA_FORMAT_SRGB_DXT1,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_SRGBA_DXT1,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_SRGBA_DXT3,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_SRGBA_DXT5,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
+   FETCH_COMPRESSED(SRGB_DXT1),
+   FETCH_COMPRESSED(SRGBA_DXT1),
+   FETCH_COMPRESSED(SRGBA_DXT3),
+   FETCH_COMPRESSED(SRGBA_DXT5),
 
/* FXT1 compressed formats */
-   {
-  MESA_FORMAT_RGB_FXT1,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_RGBA_FXT1,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
+   FETCH_COMPRESSED(RGB_FXT1),
+   FETCH_COMPRESSED(RGBA_FXT1),
 
/* RGTC compressed formats */
-   {
-  MESA_FORMAT_R_RGTC1_UNORM,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_R_RGTC1_SNORM,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_RG_RGTC2_UNORM,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_RG_RGTC2_SNORM,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
+   FETCH_COMPRESSED(R_RGTC1_UNORM),
+   FETCH_COMPRESSED(R_RGTC1_SNORM),
+   FETCH_COMPRESSED(RG_RGTC2_UNORM),
+   FETCH_COMPRESSED(RG_RGTC2_SNORM),
 
/* LATC1/2 compressed formats */
-   {
-  MESA_FORMAT_L_LATC1_UNORM,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_L_LATC1_SNORM,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_LA_LATC2_UNORM,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_LA_LATC2_SNORM,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
+   FETCH_COMPRESSED(L_LATC1_UNORM),
+   FETCH_COMPRESSED(L_LATC1_SNORM),
+   FETCH_COMPRESSED(LA_LATC2_UNORM),
+   FETCH_COMPRESSED(LA_LATC2_SNORM),
 
/* ETC1/2 compressed formats */
-   {
-  MESA_FORMAT_ETC1_RGB8,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_ETC2_RGB8,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_ETC2_SRGB8,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_ETC2_RGBA8_EAC,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed
-   },
-   {
-  MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC,
-  fetch_compressed,
-  fetch_compressed,
-  fetch_compressed

Mesa (master): mesa: add ASTC extensions to the extensions table

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 4143511b15e8f1d63176257ae8a83b4906e3204c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4143511b15e8f1d63176257ae8a83b4906e3204c

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Tue May 19 15:41:28 2015 -0700

mesa: add ASTC extensions to the extensions table

v2: alphabetize the extensions.
remove OES ASTC extension.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/extensions.c |2 ++
 src/mesa/main/mtypes.h |2 ++
 2 files changed, 4 insertions(+)

diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 4a3c231..03303ac 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -342,6 +342,8 @@ static const struct extension extension_table[] = {
/* KHR extensions */
{ GL_KHR_debug,   o(dummy_true),  
GL, 2012 },
{ GL_KHR_context_flush_control,   o(dummy_true),  
GL   | ES2, 2014 },
+   { GL_KHR_texture_compression_astc_hdr,
o(KHR_texture_compression_astc_hdr),GL   | ES2, 2012 },
+   { GL_KHR_texture_compression_astc_ldr,
o(KHR_texture_compression_astc_ldr),GL   | ES2, 2012 },
 
/* Vendor extensions */
{ GL_3DFX_texture_compression_FXT1,   
o(TDFX_texture_compression_FXT1),   GL, 1999 },
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 5031b08..a172952 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -3853,6 +3853,8 @@ struct gl_extensions
GLboolean ATI_fragment_shader;
GLboolean ATI_separate_stencil;
GLboolean INTEL_performance_query;
+   GLboolean KHR_texture_compression_astc_hdr;
+   GLboolean KHR_texture_compression_astc_ldr;
GLboolean MESA_pack_invert;
GLboolean MESA_ycbcr_texture;
GLboolean NV_conditional_render;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/glformats: recognize ASTC formats as compressed

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 692578ed134bacff1a315489ad47514450b3387f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=692578ed134bacff1a315489ad47514450b3387f

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Tue May 19 15:41:56 2015 -0700

mesa/glformats: recognize ASTC formats as compressed

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/glformats.c |   29 +
 1 file changed, 29 insertions(+)

diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index fd8336c..ce66699 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -1303,6 +1303,35 @@ _mesa_is_compressed_format(const struct gl_context *ctx, 
GLenum format)
case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:
   return _mesa_is_desktop_gl(ctx) 
  ctx-Extensions.ARB_texture_compression_bptc;
+   case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
+  return ctx-Extensions.KHR_texture_compression_astc_ldr;
case GL_PALETTE4_RGB8_OES:
case GL_PALETTE4_RGBA8_OES:
case GL_PALETTE4_R5_G6_B5_OES:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/macros: add power-of-two assertions for alignment macros

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 97f4efd573aed7ffc0ea9395f4e69ccdeb5041f6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=97f4efd573aed7ffc0ea9395f4e69ccdeb5041f6

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Wed May 27 13:25:30 2015 -0700

mesa/macros: add power-of-two assertions for alignment macros

ALIGN and ROUND_DOWN_TO both require that the alignment value passed
into the macro be a power of two in the comments. Using software assertions
verifies this to be the case.

v2: use static inline functions instead of gcc-specific statement expressions 
(Brian).
v3: fix indendation (Brian).
v4: add greater than zero requirement (Anuj).

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/drivers/dri/i965/brw_fs_nir.cpp |2 +-
 src/mesa/main/macros.h   |   14 --
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp 
b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
index a62dbb8..430efb3 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
@@ -131,7 +131,7 @@ fs_visitor::nir_setup_outputs(nir_shader *shader)
 
   switch (stage) {
   case MESA_SHADER_VERTEX:
- for (int i = 0; i  ALIGN(type_size_scalar(var-type), 4) / 4; i++) {
+ for (unsigned int i = 0; i  ALIGN(type_size_scalar(var-type), 4) / 
4; i++) {
 int output = var-data.location + i;
 this-outputs[output] = offset(reg, bld, 4 * i);
 this-output_components[output] = vector_elements;
diff --git a/src/mesa/main/macros.h b/src/mesa/main/macros.h
index 54df50c..c3ef42a 100644
--- a/src/mesa/main/macros.h
+++ b/src/mesa/main/macros.h
@@ -690,7 +690,12 @@ minify(unsigned value, unsigned levels)
  *
  * \sa ROUND_DOWN_TO()
  */
-#define ALIGN(value, alignment)  (((value) + (alignment) - 1)  ~((alignment) 
- 1))
+static inline uintptr_t
+ALIGN(uintptr_t value, int32_t alignment)
+{
+   assert((alignment  0)  _mesa_is_pow_two(alignment));
+   return (((value) + (alignment) - 1)  ~((alignment) - 1));
+}
 
 /**
  * Align a value down to an alignment value
@@ -703,7 +708,12 @@ minify(unsigned value, unsigned levels)
  *
  * \sa ALIGN()
  */
-#define ROUND_DOWN_TO(value, alignment) ((value)  ~(alignment - 1))
+static inline uintptr_t
+ROUND_DOWN_TO(uintptr_t value, int32_t alignment)
+{
+   assert((alignment  0)  _mesa_is_pow_two(alignment));
+   return ((value)  ~(alignment - 1));
+}
 
 
 /** Cross product of two 3-element vectors */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: correct mt-align_h for 2D textures on Skylake

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 1a9ceed4ba764cf73a643f8f2135b5b84cfe4581
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1a9ceed4ba764cf73a643f8f2135b5b84cfe4581

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Thu Jun 18 11:02:17 2015 -0700

i965: correct mt-align_h for 2D textures on Skylake

In agreement with commit 4ab8d59a23, vertical alignment values are equal to
four times the block height on Gen9+.

v2: add newlines to separate declarations, statments, and comments.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Reviewed-by: Neil Roberts n...@linux.intel.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/drivers/dri/i965/brw_tex_layout.c |   11 ---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c 
b/src/mesa/drivers/dri/i965/brw_tex_layout.c
index 1d8eb09..e8a92dd 100644
--- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
@@ -270,9 +270,14 @@ intel_vertical_texture_alignment_unit(struct brw_context 
*brw,
 * Where * means either VALIGN_2 or VALIGN_4 depending on the setting of
 * the SURFACE_STATE Surface Vertical Alignment field.
 */
-   if (_mesa_is_format_compressed(mt-format))
-  /* See comment above for the horizontal alignment */
-  return brw-gen = 9 ? 16 : 4;
+if (_mesa_is_format_compressed(mt-format)) {
+   unsigned int i, j;
+
+   _mesa_get_format_block_size(mt-format, i, j);
+
+   /* See comment above for the horizontal alignment */
+   return brw-gen = 9 ? j * 4 : 4;
+}
 
if (mt-format == MESA_FORMAT_S_UINT8)
   return brw-gen = 7 ? 8 : 4;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: change the meaning of cpp for compressed textures

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: a6877341358e1534e74dd9e5fc72934a20b78228
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a6877341358e1534e74dd9e5fc72934a20b78228

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Thu May 21 14:27:55 2015 -0700

i965: change the meaning of cpp for compressed textures

An ASTC block takes up 16 bytes for all block width and height configurations.
This size is not integrally divisible by all ASTC block widths. Therefore cpp
is changed to mean bytes per block if the texture is compressed.

Because the original definition was bytes per block divided by block width, all
references to the mipmap width must be divided the block width. This keeps the
address calculation formulas consistent. For example, the units for 
miptree_level
x_offset and miptree total_width has changed from pixels to blocks.

v2: reuse preexisting ALIGN_NPOT macro located in an i965 driver file.
v3: move ALIGN_NPOT into seperate commit.
simplify cpp assignment in copy_image_with_blitter().
update miptree width and offset variables in: intel_miptree_copy_slice(),
intel_miptree_map_gtt(), and brw_miptree_layout_texture_3d().

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/drivers/dri/i965/brw_tex_layout.c|   15 +--
 src/mesa/drivers/dri/i965/intel_copy_image.c  |   19 +--
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c |   14 --
 src/mesa/drivers/dri/i965/intel_mipmap_tree.h |2 +-
 4 files changed, 15 insertions(+), 35 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c 
b/src/mesa/drivers/dri/i965/brw_tex_layout.c
index e8a92dd..a95ac95 100644
--- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
@@ -395,6 +395,7 @@ brw_miptree_layout_2d(struct intel_mipmap_tree *mt)
}
}
 
+   mt-total_width /= bw;
mt-total_height = 0;
 
for (unsigned level = mt-first_level; level = mt-last_level; level++) {
@@ -419,7 +420,7 @@ brw_miptree_layout_2d(struct intel_mipmap_tree *mt)
   /* Layout_below: step right after second mipmap.
*/
   if (level == mt-first_level + 1) {
-x += ALIGN_NPOT(width, mt-align_w);
+x += ALIGN_NPOT(width, mt-align_w) / bw;
   } else {
 y += img_height;
   }
@@ -579,12 +580,14 @@ static void
 brw_miptree_layout_texture_3d(struct brw_context *brw,
   struct intel_mipmap_tree *mt)
 {
-   unsigned yscale = mt-compressed ? 4 : 1;
-
mt-total_width = 0;
mt-total_height = 0;
 
unsigned ysum = 0;
+   unsigned bh, bw;
+
+   _mesa_get_format_block_size(mt-format, bw, bh);
+
for (unsigned level = mt-first_level; level = mt-last_level; level++) {
   unsigned WL = MAX2(mt-physical_width0  level, 1);
   unsigned HL = MAX2(mt-physical_height0  level, 1);
@@ -601,9 +604,9 @@ brw_miptree_layout_texture_3d(struct brw_context *brw,
  unsigned x = (q % (1  level)) * wL;
  unsigned y = ysum + (q  level) * hL;
 
- intel_miptree_set_image_offset(mt, level, q, x, y / yscale);
- mt-total_width = MAX2(mt-total_width, x + wL);
- mt-total_height = MAX2(mt-total_height, (y + hL) / yscale);
+ intel_miptree_set_image_offset(mt, level, q, x / bw, y / bh);
+ mt-total_width = MAX2(mt-total_width, (x + wL) / bw);
+ mt-total_height = MAX2(mt-total_height, (y + hL) / bh);
   }
 
   ysum += ALIGN(DL, 1  level) / (1  level) * hL;
diff --git a/src/mesa/drivers/dri/i965/intel_copy_image.c 
b/src/mesa/drivers/dri/i965/intel_copy_image.c
index 3706704..ac2738f 100644
--- a/src/mesa/drivers/dri/i965/intel_copy_image.c
+++ b/src/mesa/drivers/dri/i965/intel_copy_image.c
@@ -41,7 +41,6 @@ copy_image_with_blitter(struct brw_context *brw,
 {
GLuint bw, bh;
uint32_t src_image_x, src_image_y, dst_image_x, dst_image_y;
-   int cpp;
 
/* The blitter doesn't understand multisampling at all. */
if (src_mt-num_samples  0 || dst_mt-num_samples  0)
@@ -86,16 +85,6 @@ copy_image_with_blitter(struct brw_context *brw,
   src_y /= (int)bh;
   src_width /= (int)bw;
   src_height /= (int)bh;
-
-  /* Inside of the miptree, the x offsets are stored in pixels while
-   * the y offsets are stored in blocks.  We need to scale just the x
-   * offset.
-   */
-  src_image_x /= bw;
-
-  cpp = _mesa_get_format_bytes(src_mt-format);
-   } else {
-  cpp = src_mt-cpp;
}
src_x += src_image_x;
src_y += src_image_y;
@@ -111,18 +100,12 @@ copy_image_with_blitter(struct brw_context *brw,
 
   dst_x /= (int)bw;
   dst_y /= (int)bh;
-
-  /* Inside of the miptree, the x offsets are stored in pixels while
-   * the y offsets are stored in blocks.  We need to scale just the x
-   * offset.
-   */
-  dst_image_x /= bw;
}
dst_x += dst_image_x;
dst_y += dst_image_y;
 
return

Mesa (master): i965: refactor miptree alignment calculation code

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 43d5b4db969930f9d85f605c75ef9ffe67e58ad3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=43d5b4db969930f9d85f605c75ef9ffe67e58ad3

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Thu May 28 16:02:34 2015 -0700

i965: refactor miptree alignment calculation code

Remove redundant checks and comments by grouping our calculations for
align_w and align_h wherever possible.

v2: reintroduce brw.
don't include functional changes.
don't adjust function parameters or create a new function.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/drivers/dri/i965/brw_tex_layout.c |   85 ++--
 1 file changed, 30 insertions(+), 55 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c 
b/src/mesa/drivers/dri/i965/brw_tex_layout.c
index a95ac95..268b995 100644
--- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
@@ -123,12 +123,6 @@ intel_horizontal_texture_alignment_unit(struct brw_context 
*brw,
   return 16;
 
/**
-* From the Alignment Unit Size section of various specs, namely:
-* - Gen3 Spec: Memory Data Formats Volume, Section 1.20.1.4
-* - i965 and G45 PRMs: Volume 1, Section 6.17.3.4.
-* - Ironlake and Sandybridge PRMs: Volume 1, Part 1, Section 7.18.3.4
-* - BSpec (for Ivybridge and slight variations in separate stencil)
-*
 * +--+
 * || alignment unit width  (i) |
 * | Surface Property   |-|
@@ -146,32 +140,6 @@ intel_horizontal_texture_alignment_unit(struct brw_context 
*brw,
 * On IVB+, non-special cases can be overridden by setting the SURFACE_STATE
 * Surface Horizontal Alignment field to HALIGN_4 or HALIGN_8.
 */
-if (_mesa_is_format_compressed(mt-format)) {
-   /* The hardware alignment requirements for compressed textures
-* happen to match the block boundaries.
-*/
-  unsigned int i, j;
-  _mesa_get_format_block_size(mt-format, i, j);
-
-  /* On Gen9+ we can pick our own alignment for compressed textures but it
-   * has to be a multiple of the block size. The minimum alignment we can
-   * pick is 4 so we effectively have to align to 4 times the block
-   * size
-   */
-  if (brw-gen = 9)
- return i * 4;
-  else
- return i;
-}
-
-   if (mt-format == MESA_FORMAT_S_UINT8)
-  return 8;
-
-   if (brw-gen = 9  mt-tr_mode != INTEL_MIPTREE_TRMODE_NONE) {
-  uint32_t align = tr_mode_horizontal_texture_alignment(brw, mt);
-  /* XY_FAST_COPY_BLT doesn't support horizontal alignment  32. */
-  return align  32 ? 32 : align;
-   }
 
if (brw-gen = 7  mt-format == MESA_FORMAT_Z_UNORM16)
   return 8;
@@ -248,12 +216,6 @@ intel_vertical_texture_alignment_unit(struct brw_context 
*brw,
   const struct intel_mipmap_tree *mt)
 {
/**
-* From the Alignment Unit Size section of various specs, namely:
-* - Gen3 Spec: Memory Data Formats Volume, Section 1.20.1.4
-* - i965 and G45 PRMs: Volume 1, Section 6.17.3.4.
-* - Ironlake and Sandybridge PRMs: Volume 1, Part 1, Section 7.18.3.4
-* - BSpec (for Ivybridge and slight variations in separate stencil)
-*
 * +--+
 * || alignment unit height (j) |
 * | Surface Property   |-|
@@ -270,23 +232,6 @@ intel_vertical_texture_alignment_unit(struct brw_context 
*brw,
 * Where * means either VALIGN_2 or VALIGN_4 depending on the setting of
 * the SURFACE_STATE Surface Vertical Alignment field.
 */
-if (_mesa_is_format_compressed(mt-format)) {
-   unsigned int i, j;
-
-   _mesa_get_format_block_size(mt-format, i, j);
-
-   /* See comment above for the horizontal alignment */
-   return brw-gen = 9 ? j * 4 : 4;
-}
-
-   if (mt-format == MESA_FORMAT_S_UINT8)
-  return brw-gen = 7 ? 8 : 4;
-
-   if (mt-tr_mode != INTEL_MIPTREE_TRMODE_NONE) {
-  uint32_t align = tr_mode_vertical_texture_alignment(brw, mt);
-  /* XY_FAST_COPY_BLT doesn't support vertical alignment  64 */
-  return align  64 ? 64 : align;
-   }
 
/* Broadwell only supports VALIGN of 4, 8, and 16.  The BSpec says 4
 * should always be used, except for stencil buffers, which should be 8.
@@ -775,6 +720,13 @@ intel_miptree_set_alignment(struct brw_context *brw,
 struct intel_mipmap_tree *mt,
 uint32_t layout_flags)
 {
+   /**
+* From the Alignment Unit Size section of various specs, namely:
+* - Gen3 Spec: Memory

Mesa (master): mesa/teximage: accept ASTC formats for 3D texture specification

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 12b519b4571d27a45abd3266f35b126d00dcb926
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=12b519b4571d27a45abd3266f35b126d00dcb926

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Mon Jul 27 16:09:09 2015 -0700

mesa/teximage: accept ASTC formats for 3D texture specification

The ASTC spec was revised as follows:

   Revision 2, April 28, 2015 - added CompressedTex{Sub,}Image3D to
   commands accepting ASTC format tokens in the New Tokens section [...].

Support only exists in the HDR submode:

   Add a second new column 3D Tex. which is empty for all non-ASTC
   formats. If only the LDR profile is supported by the implementation,
   this column is also empty for all ASTC formats. If both the LDR and HDR
   profiles are supported only, this column is checked for all ASTC
   formats.

LDR-only systems should generate an INVALID_OPERATION error when
attempting to call CompressedTexImage3D with the TEXTURE_3D target.

v2. return the proper error for LDR-only systems.
v3. update is_astc_format().
v4. use _mesa_is_astc_format().
v5. place logic in _mesa_target_can_be_compressed.
v6. fix issues handling ASTC formats.

Reviewed-by: Chad Versace chad.vers...@intel.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/teximage.c |   63 --
 1 file changed, 56 insertions(+), 7 deletions(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 0a641cf..56ae415 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -1854,19 +1854,68 @@ _mesa_target_can_be_compressed(const struct gl_context 
*ctx, GLenum target,
 return write_error(error, GL_INVALID_OPERATION);
 
   target_can_be_compresed = ctx-Extensions.ARB_texture_cube_map_array;
-  break;
-   case GL_TEXTURE_3D:
 
-  /* See ETC2/EAC comment in switch case GL_TEXTURE_CUBE_MAP_ARRAY. */
-  if (layout == MESA_FORMAT_LAYOUT_ETC2  _mesa_is_gles3(ctx))
+  /* From the KHR_texture_compression_astc_hdr spec:
+   *
+   * Add a second new column 3D Tex. which is empty for all non-ASTC
+   * formats. If only the LDR profile is supported by the
+   * implementation, this column is also empty for all ASTC formats. If
+   * both the LDR and HDR profiles are supported only, this column is
+   * checked for all ASTC formats.
+   *
+   * Add a third new column Cube Map Array Tex. which is empty for 
all
+   * non-ASTC formats, and checked for all ASTC formats.
+   *
+   * and,
+   *
+   * 'An INVALID_OPERATION error is generated by CompressedTexImage3D
+   *  if internalformat is TEXTURE_CUBE_MAP_ARRAY and the
+   *  Cube Map Array column of table 8.19 is *not* checked, or if
+   *  internalformat is TEXTURE_3D and the 3D Tex. column of table
+   *  8.19 is *not* checked'
+   *
+   * The instances of internalformat above should say target.
+   */
+
+  /* Throw an INVALID_OPERATION error if the target is
+   * TEXTURE_CUBE_MAP_ARRAY and the format is not ASTC.
+   */
+  if (target_can_be_compresed 
+  ctx-Extensions.KHR_texture_compression_astc_ldr 
+  layout != MESA_FORMAT_LAYOUT_ASTC)
  return write_error(error, GL_INVALID_OPERATION);
 
-  if (layout == MESA_FORMAT_LAYOUT_BPTC) {
+  break;
+   case GL_TEXTURE_3D:
+  switch (layout) {
+  case MESA_FORMAT_LAYOUT_ETC2:
+ /* See ETC2/EAC comment in case GL_TEXTURE_CUBE_MAP_ARRAY. */
+ if (_mesa_is_gles3(ctx))
+return write_error(error, GL_INVALID_OPERATION);
+ break;
+  case MESA_FORMAT_LAYOUT_BPTC:
  target_can_be_compresed = 
ctx-Extensions.ARB_texture_compression_bptc;
  break;
-  }
+  case MESA_FORMAT_LAYOUT_ASTC:
+ target_can_be_compresed =
+ ctx-Extensions.KHR_texture_compression_astc_hdr;
 
-  break;
+ /* Throw an INVALID_OPERATION error if the target is TEXTURE_3D and
+  * and the hdr extension is not supported.
+  * See comment in switch case GL_TEXTURE_CUBE_MAP_ARRAY for more info.
+  */
+ if (!target_can_be_compresed)
+return write_error(error, GL_INVALID_OPERATION);
+ break;
+  default:
+ /* Throw an INVALID_OPERATION error if the target is TEXTURE_3D and
+  * the format is not ASTC.
+  * See comment in switch case GL_TEXTURE_CUBE_MAP_ARRAY for more info.
+  */
+ if (ctx-Extensions.KHR_texture_compression_astc_ldr)
+return write_error(error, GL_INVALID_OPERATION);
+ break;
+  }
default:
   break;
}

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/texcompress: enable translation between MESA and GL ASTC formats

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 23c9cd5a9613ad07bdbe55708a56562ee23f25d5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=23c9cd5a9613ad07bdbe55708a56562ee23f25d5

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Tue Apr 28 15:08:32 2015 -0700

mesa/texcompress: enable translation between MESA and GL ASTC formats

v3. conform the ASTC MESA_FORMAT enums to the existing naming convention.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/texcompress.c |  114 +++
 1 file changed, 114 insertions(+)

diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
index c028daa..bb94137 100644
--- a/src/mesa/main/texcompress.c
+++ b/src/mesa/main/texcompress.c
@@ -471,6 +471,63 @@ _mesa_glenum_to_compressed_format(GLenum format)
case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:
   return MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT;
 
+   case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
+  return MESA_FORMAT_RGBA_ASTC_4x4;
+   case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
+  return MESA_FORMAT_RGBA_ASTC_5x4;
+   case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
+  return MESA_FORMAT_RGBA_ASTC_5x5;
+   case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
+  return MESA_FORMAT_RGBA_ASTC_6x5;
+   case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
+  return MESA_FORMAT_RGBA_ASTC_6x6;
+   case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
+  return MESA_FORMAT_RGBA_ASTC_8x5;
+   case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
+  return MESA_FORMAT_RGBA_ASTC_8x6;
+   case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
+  return MESA_FORMAT_RGBA_ASTC_8x8;
+   case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
+  return MESA_FORMAT_RGBA_ASTC_10x5;
+   case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
+  return MESA_FORMAT_RGBA_ASTC_10x6;
+   case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
+  return MESA_FORMAT_RGBA_ASTC_10x8;
+   case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
+  return MESA_FORMAT_RGBA_ASTC_10x10;
+   case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
+  return MESA_FORMAT_RGBA_ASTC_12x10;
+   case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
+  return MESA_FORMAT_RGBA_ASTC_12x12;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x4;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x5;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x6;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x8;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x5;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x6;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x8;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x10;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x10;
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
+  return MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x12;
+
default:
   return MESA_FORMAT_NONE;
}
@@ -561,6 +618,63 @@ _mesa_compressed_format_to_glenum(struct gl_context *ctx, 
mesa_format mesaFormat
case MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT:
   return GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT;
 
+   case MESA_FORMAT_RGBA_ASTC_4x4:
+  return GL_COMPRESSED_RGBA_ASTC_4x4_KHR;
+   case MESA_FORMAT_RGBA_ASTC_5x4:
+  return GL_COMPRESSED_RGBA_ASTC_5x4_KHR;
+   case MESA_FORMAT_RGBA_ASTC_5x5:
+  return GL_COMPRESSED_RGBA_ASTC_5x5_KHR;
+   case MESA_FORMAT_RGBA_ASTC_6x5:
+  return GL_COMPRESSED_RGBA_ASTC_6x5_KHR;
+   case MESA_FORMAT_RGBA_ASTC_6x6:
+  return GL_COMPRESSED_RGBA_ASTC_6x6_KHR;
+   case MESA_FORMAT_RGBA_ASTC_8x5:
+  return GL_COMPRESSED_RGBA_ASTC_8x5_KHR;
+   case MESA_FORMAT_RGBA_ASTC_8x6:
+  return GL_COMPRESSED_RGBA_ASTC_8x6_KHR;
+   case MESA_FORMAT_RGBA_ASTC_8x8:
+  return GL_COMPRESSED_RGBA_ASTC_8x8_KHR;
+   case MESA_FORMAT_RGBA_ASTC_10x5:
+  return GL_COMPRESSED_RGBA_ASTC_10x5_KHR;
+   case MESA_FORMAT_RGBA_ASTC_10x6:
+  return GL_COMPRESSED_RGBA_ASTC_10x6_KHR;
+   case MESA_FORMAT_RGBA_ASTC_10x8:
+  return GL_COMPRESSED_RGBA_ASTC_10x8_KHR;
+   case MESA_FORMAT_RGBA_ASTC_10x10:
+  return GL_COMPRESSED_RGBA_ASTC_10x10_KHR;
+   case MESA_FORMAT_RGBA_ASTC_12x10:
+  return GL_COMPRESSED_RGBA_ASTC_12x10_KHR;
+   case MESA_FORMAT_RGBA_ASTC_12x12:
+  return GL_COMPRESSED_RGBA_ASTC_12x12_KHR

Mesa (master): glapi: add support for KHR_texture_compression_astc_ldr

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: e9fd8e154fdb0394cbaed5e14ac52e689a020ebe
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e9fd8e154fdb0394cbaed5e14ac52e689a020ebe

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Tue Apr 28 14:41:49 2015 -0700

glapi: add support for KHR_texture_compression_astc_ldr

v2: correct the spelling of the sRGB variants.
remove spaces around = when setting the enum value.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 .../glapi/gen/KHR_texture_compression_astc.xml |   40 
 src/mapi/glapi/gen/Makefile.am |1 +
 src/mapi/glapi/gen/gl_API.xml  |2 +-
 3 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/src/mapi/glapi/gen/KHR_texture_compression_astc.xml 
b/src/mapi/glapi/gen/KHR_texture_compression_astc.xml
new file mode 100644
index 000..7b5864d
--- /dev/null
+++ b/src/mapi/glapi/gen/KHR_texture_compression_astc.xml
@@ -0,0 +1,40 @@
+?xml version=1.0?
+!DOCTYPE OpenGLAPI SYSTEM gl_API.dtd
+
+OpenGLAPI
+
+category name=GL_KHR_texture_compression_astc_ldr number=118
+
+enum name=COMPRESSED_RGBA_ASTC_4x4_KHR   value=0x93B0/
+enum name=COMPRESSED_RGBA_ASTC_5x4_KHR   value=0x93B1/
+enum name=COMPRESSED_RGBA_ASTC_5x5_KHR   value=0x93B2/
+enum name=COMPRESSED_RGBA_ASTC_6x5_KHR   value=0x93B3/
+enum name=COMPRESSED_RGBA_ASTC_6x6_KHR   value=0x93B4/
+enum name=COMPRESSED_RGBA_ASTC_8x5_KHR   value=0x93B5/
+enum name=COMPRESSED_RGBA_ASTC_8x6_KHR   value=0x93B6/
+enum name=COMPRESSED_RGBA_ASTC_8x8_KHR   value=0x93B7/
+enum name=COMPRESSED_RGBA_ASTC_10x5_KHR  value=0x93B8/
+enum name=COMPRESSED_RGBA_ASTC_10x6_KHR  value=0x93B9/
+enum name=COMPRESSED_RGBA_ASTC_10x8_KHR  value=0x93BA/
+enum name=COMPRESSED_RGBA_ASTC_10x10_KHR value=0x93BB/
+enum name=COMPRESSED_RGBA_ASTC_12x10_KHR value=0x93BC/
+enum name=COMPRESSED_RGBA_ASTC_12x12_KHR value=0x93BD/
+
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR   value=0x93D0/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR   value=0x93D1/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR   value=0x93D2/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR   value=0x93D3/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR   value=0x93D4/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR   value=0x93D5/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR   value=0x93D6/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR   value=0x93D7/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR  value=0x93D8/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR  value=0x93D9/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR  value=0x93DA/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR value=0x93DB/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR value=0x93DC/
+enum name=COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR value=0x93DD/
+
+/category
+
+/OpenGLAPI
diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
index 86a9243..9224de2 100644
--- a/src/mapi/glapi/gen/Makefile.am
+++ b/src/mapi/glapi/gen/Makefile.am
@@ -190,6 +190,7 @@ API_XML = \
INTEL_performance_query.xml \
KHR_debug.xml \
KHR_context_flush_control.xml \
+   KHR_texture_compression_astc.xml \
NV_conditional_render.xml \
NV_primitive_restart.xml \
NV_texture_barrier.xml \
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index 658efa4..f0dcdca 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -8168,7 +8168,7 @@
 
 xi:include href=ARB_texture_storage.xml 
xmlns:xi=http://www.w3.org/2001/XInclude/
 
-!-- ARB extension #118 --
+xi:include href=KHR_texture_compression_astc.xml 
xmlns:xi=http://www.w3.org/2001/XInclude/
 
 xi:include href=KHR_debug.xml xmlns:xi=http://www.w3.org/2001/XInclude/
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: use ALIGN_NPOT for setting ASTC mipmap layouts

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 10ff64fd3d19bc9da793fa43eb746c29608bfddd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=10ff64fd3d19bc9da793fa43eb746c29608bfddd

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Thu May 21 14:27:55 2015 -0700

i965: use ALIGN_NPOT for setting ASTC mipmap layouts

ALIGN is changed to ALIGN_NPOT because alignment values are sometimes not
powers of two when working with ASTC.

v2: handle texture arrays and LDR-only systems.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/drivers/dri/i965/brw_tex_layout.c|   26 -
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c |4 ++--
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c 
b/src/mesa/drivers/dri/i965/brw_tex_layout.c
index e96732a..1d8eb09 100644
--- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
@@ -367,7 +367,7 @@ brw_miptree_layout_2d(struct intel_mipmap_tree *mt)
mt-total_width = mt-physical_width0;
 
if (mt-compressed)
-   mt-total_width = ALIGN(mt-total_width, bw);
+   mt-total_width = ALIGN_NPOT(mt-total_width, bw);
 
/* May need to adjust width to accommodate the placement of
 * the 2nd mipmap.  This occurs when the alignment
@@ -378,10 +378,10 @@ brw_miptree_layout_2d(struct intel_mipmap_tree *mt)
unsigned mip1_width;
 
if (mt-compressed) {
-  mip1_width = ALIGN(minify(mt-physical_width0, 1), mt-align_w) +
- ALIGN(minify(mt-physical_width0, 2), bw);
+  mip1_width = ALIGN_NPOT(minify(mt-physical_width0, 1), mt-align_w) 
+
+ ALIGN_NPOT(minify(mt-physical_width0, 2), bw);
} else {
-  mip1_width = ALIGN(minify(mt-physical_width0, 1), mt-align_w) +
+  mip1_width = ALIGN_NPOT(minify(mt-physical_width0, 1), mt-align_w) 
+
  minify(mt-physical_width0, 2);
}
 
@@ -397,7 +397,7 @@ brw_miptree_layout_2d(struct intel_mipmap_tree *mt)
 
   intel_miptree_set_level_info(mt, level, x, y, depth);
 
-  img_height = ALIGN(height, mt-align_h);
+  img_height = ALIGN_NPOT(height, mt-align_h);
   if (mt-compressed)
 img_height /= bh;
 
@@ -414,7 +414,7 @@ brw_miptree_layout_2d(struct intel_mipmap_tree *mt)
   /* Layout_below: step right after second mipmap.
*/
   if (level == mt-first_level + 1) {
-x += ALIGN(width, mt-align_w);
+x += ALIGN_NPOT(width, mt-align_w);
   } else {
 y += img_height;
   }
@@ -434,7 +434,7 @@ brw_miptree_get_horizontal_slice_pitch(const struct 
brw_context *brw,
 {
if ((brw-gen  9  mt-target == GL_TEXTURE_3D) ||
(brw-gen == 4  mt-target == GL_TEXTURE_CUBE_MAP)) {
-  return ALIGN(minify(mt-physical_width0, level), mt-align_w);
+  return ALIGN_NPOT(minify(mt-physical_width0, level), mt-align_w);
} else {
   return 0;
}
@@ -475,11 +475,11 @@ brw_miptree_get_vertical_slice_pitch(const struct 
brw_context *brw,
} else if (mt-target == GL_TEXTURE_3D ||
   (brw-gen == 4  mt-target == GL_TEXTURE_CUBE_MAP) ||
   mt-array_layout == ALL_SLICES_AT_EACH_LOD) {
-  return ALIGN(minify(mt-physical_height0, level), mt-align_h);
+  return ALIGN_NPOT(minify(mt-physical_height0, level), mt-align_h);
 
} else {
-  const unsigned h0 = ALIGN(mt-physical_height0, mt-align_h);
-  const unsigned h1 = ALIGN(minify(mt-physical_height0, 1), mt-align_h);
+  const unsigned h0 = ALIGN_NPOT(mt-physical_height0, mt-align_h);
+  const unsigned h1 = ALIGN_NPOT(minify(mt-physical_height0, 1), 
mt-align_h);
 
   return h0 + h1 + (brw-gen = 7 ? 12 : 11) * mt-align_h;
}
@@ -551,7 +551,7 @@ brw_miptree_layout_texture_array(struct brw_context *brw,
 
for (unsigned level = mt-first_level; level = mt-last_level; level++) {
   unsigned img_height;
-  img_height = ALIGN(height, mt-align_h);
+  img_height = ALIGN_NPOT(height, mt-align_h);
   if (mt-compressed)
  img_height /= mt-align_h;
 
@@ -584,8 +584,8 @@ brw_miptree_layout_texture_3d(struct brw_context *brw,
   unsigned WL = MAX2(mt-physical_width0  level, 1);
   unsigned HL = MAX2(mt-physical_height0  level, 1);
   unsigned DL = MAX2(mt-physical_depth0  level, 1);
-  unsigned wL = ALIGN(WL, mt-align_w);
-  unsigned hL = ALIGN(HL, mt-align_h);
+  unsigned wL = ALIGN_NPOT(WL, mt-align_w);
+  unsigned hL = ALIGN_NPOT(HL, mt-align_h);
 
   if (mt-target == GL_TEXTURE_CUBE_MAP)
  DL = 6;
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c 
b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index e85c3f0..44eb913 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -1272,8 +1272,8 @@ intel_miptree_copy_slice(struct brw_context *brw,
if (dst_mt-compressed) {
   unsigned

Mesa (master): i965/surface_formats: add support for 2D ASTC surface formats

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 8b1f008e9acf94645a28c27fa261f6450a3edb84
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b1f008e9acf94645a28c27fa261f6450a3edb84

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Wed Apr 15 14:15:10 2015 -0700

i965/surface_formats: add support for 2D ASTC surface formats

Define two-thirds of the 2D Intel ASTC surface formats (LDR-only). This allows
a 1-to-1 mapping from the mesa format to the Intel format.

ASTC textures will default to being processed in LDR mode. If there is
hardware support for HDR/Full mode and the texture is not sRGB, add the
format bit necessary to process it in HDR/Full mode.

v2: remove extra newlines.
v3: follow existing coding style in translate_tex_format().
v4: expound on the GEN9_SURFACE_ASTC_HDR_FORMAT_BIT comment.
update SF table - ASTC is actually supported in Gen8.
v5: conform the ASTC MESA_FORMAT enums to the existing naming convention.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/drivers/dri/i965/brw_defines.h |   32 +
 src/mesa/drivers/dri/i965/brw_surface_formats.c |   87 +++
 2 files changed, 119 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_defines.h 
b/src/mesa/drivers/dri/i965/brw_defines.h
index 82a3635..cb5c82a 100644
--- a/src/mesa/drivers/dri/i965/brw_defines.h
+++ b/src/mesa/drivers/dri/i965/brw_defines.h
@@ -504,6 +504,38 @@
 #define BRW_SURFACEFORMAT_R8G8B8_UINT0x1C8
 #define BRW_SURFACEFORMAT_R8G8B8_SINT0x1C9
 #define BRW_SURFACEFORMAT_RAW0x1FF
+
+#define GEN9_SURFACE_ASTC_HDR_FORMAT_BIT 0x100
+
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_4x4_U8sRGB 0x200
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_5x4_U8sRGB 0x208
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_5x5_U8sRGB 0x209
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_6x5_U8sRGB 0x211
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_6x6_U8sRGB 0x212
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_8x5_U8sRGB 0x221
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_8x6_U8sRGB 0x222
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_8x8_U8sRGB 0x224
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_10x5_U8sRGB0x231
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_10x6_U8sRGB0x232
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_10x8_U8sRGB0x234
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_10x10_U8sRGB   0x236
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_12x10_U8sRGB   0x23E
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_12x12_U8sRGB   0x23F
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_4x4_FLT16  0x240
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_5x4_FLT16  0x248
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_5x5_FLT16  0x249
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_6x5_FLT16  0x251
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_6x6_FLT16  0x252
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_8x5_FLT16  0x261
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_8x6_FLT16  0x262
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_8x8_FLT16  0x264
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_10x5_FLT16 0x271
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_10x6_FLT16 0x272
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_10x8_FLT16 0x274
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_10x10_FLT160x276
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_12x10_FLT160x27E
+#define BRW_SURFACEFORMAT_ASTC_LDR_2D_12x12_FLT160x27F
+
 #define BRW_SURFACE_FORMAT_SHIFT   18
 #define BRW_SURFACE_FORMAT_MASKINTEL_MASK(26, 18)
 
diff --git a/src/mesa/drivers/dri/i965/brw_surface_formats.c 
b/src/mesa/drivers/dri/i965/brw_surface_formats.c
index a33fd88..97fff60 100644
--- a/src/mesa/drivers/dri/i965/brw_surface_formats.c
+++ b/src/mesa/drivers/dri/i965/brw_surface_formats.c
@@ -307,6 +307,34 @@ const struct surface_format_info surface_formats[] = {
SF( x,  x,  x,  x,  x,  x,  x,  x,  x, ETC2_EAC_SRGB8_A8)
SF( x,  x,  x,  x,  x,  x,  x,  x,  x, R8G8B8_UINT)
SF( x,  x,  x,  x,  x,  x,  x,  x,  x, R8G8B8_SINT)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_4x4_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_5x4_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_5x5_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_6x5_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_6x6_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_8x5_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_8x6_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_8x8_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_10x5_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_10x6_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_10x8_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x, ASTC_LDR_2D_10x10_FLT16)
+   SF(80, 80,  x,  x,  x,  x,  x,  x,  x

Mesa (master): mesa/macros: move ALIGN_NPOT to macros.h

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 54d2aa4258f0bfcc669b2bc4e82332f7ff4876dd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=54d2aa4258f0bfcc669b2bc4e82332f7ff4876dd

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Tue Jun  2 11:03:22 2015 -0700

mesa/macros: move ALIGN_NPOT to macros.h

Aligning with a non-power-of-two number is a general task that can be used in
various places. This commit is required for the next one.

v2: add greater than 0 assertion (Anuj).
convert the macro to a static inline function.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/drivers/dri/i965/intel_upload.c |6 --
 src/mesa/main/macros.h   |   10 ++
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_upload.c 
b/src/mesa/drivers/dri/i965/intel_upload.c
index 870aabc..deaae6c 100644
--- a/src/mesa/drivers/dri/i965/intel_upload.c
+++ b/src/mesa/drivers/dri/i965/intel_upload.c
@@ -44,12 +44,6 @@
 
 #define INTEL_UPLOAD_SIZE (64*1024)
 
-/**
- * Like ALIGN(), but works with a non-power-of-two alignment.
- */
-#define ALIGN_NPOT(value, alignment) \
-   (((value) + (alignment) - 1) / (alignment) * (alignment))
-
 void
 intel_upload_finish(struct brw_context *brw)
 {
diff --git a/src/mesa/main/macros.h b/src/mesa/main/macros.h
index c3ef42a..ed207d4 100644
--- a/src/mesa/main/macros.h
+++ b/src/mesa/main/macros.h
@@ -698,6 +698,16 @@ ALIGN(uintptr_t value, int32_t alignment)
 }
 
 /**
+ * Like ALIGN(), but works with a non-power-of-two alignment.
+ */
+static inline uintptr_t
+ALIGN_NPOT(uintptr_t value, int32_t alignment)
+{
+   assert(alignment  0);
+   return (value + alignment - 1) / alignment * alignment;
+}
+
+/**
  * Align a value down to an alignment value
  *
  * If \c value is not already aligned to the requested alignment value, it

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: don't enable online compression for ASTC formats

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 582ce1ea976a16aa8f32ff72cb2fecb00186e253
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=582ce1ea976a16aa8f32ff72cb2fecb00186e253

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Mon May 18 16:30:30 2015 -0700

mesa: don't enable online compression for ASTC formats

In agreement with the ASTC spec, this makes calls to TexImage*D unsuccessful.
Implied by the spec, Generate[Texture]Mipmap and [Copy]Tex[Sub]Image*D calls
must be unsuccessful as well.

v2. actually force attempts to compress online to fail.
v3. indentation (Matt).
v4. update copytexture_error_check to account for CopyTexImage*D (Chad).

Reviewed-by: Chad Versace chad.vers...@intel.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/genmipmap.c   |1 +
 src/mesa/main/glformats.c   |   41 +
 src/mesa/main/glformats.h   |3 +++
 src/mesa/main/texcompress.c |   22 ++
 src/mesa/main/teximage.c|   17 +
 5 files changed, 80 insertions(+), 4 deletions(-)

diff --git a/src/mesa/main/genmipmap.c b/src/mesa/main/genmipmap.c
index c18f9d5..4ec8385 100644
--- a/src/mesa/main/genmipmap.c
+++ b/src/mesa/main/genmipmap.c
@@ -111,6 +111,7 @@ _mesa_generate_texture_mipmap(struct gl_context *ctx,
 
if (_mesa_is_enum_format_integer(srcImage-InternalFormat) ||
_mesa_is_depthstencil_format(srcImage-InternalFormat) ||
+   _mesa_is_astc_format(srcImage-InternalFormat) ||
_mesa_is_stencil_format(srcImage-InternalFormat)) {
   _mesa_unlock_texture(ctx, texObj);
   _mesa_error(ctx, GL_INVALID_OPERATION,
diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index 3eb66da..fd8336c 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -820,6 +820,47 @@ _mesa_is_enum_format_signed_int(GLenum format)
}
 }
 
+/**
+ * Test if the given format is an ASTC format.
+ */
+GLboolean
+_mesa_is_astc_format(GLenum internalFormat)
+{
+   switch (internalFormat) {
+   case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
+   case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
+   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
+  return true;
+   default:
+  return false;
+   }
+}
+
 
 /**
  * Test if the given format is an integer (non-normalized) format.
diff --git a/src/mesa/main/glformats.h b/src/mesa/main/glformats.h
index 419955a..aec905d 100644
--- a/src/mesa/main/glformats.h
+++ b/src/mesa/main/glformats.h
@@ -57,6 +57,9 @@ extern GLint
 _mesa_bytes_per_vertex_attrib(GLint comps, GLenum type);
 
 extern GLboolean
+_mesa_is_astc_format(GLenum internalFormat);
+
+extern GLboolean
 _mesa_is_type_unsigned(GLenum type);
 
 extern GLboolean
diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
index edfb036..c028daa 100644
--- a/src/mesa/main/texcompress.c
+++ b/src/mesa/main/texcompress.c
@@ -229,6 +229,28 @@ _mesa_gl_compressed_format_base_format(GLenum format)
  *what GL_NUM_COMPRESSED_TEXTURE_FORMATS and
  *GL_COMPRESSED_TEXTURE_FORMATS return.
  *
+ * The KHR_texture_compression_astc_hdr spec says:
+ *
+ *Interactions with OpenGL 4.2
+ *
+ *OpenGL 4.2 supports the feature that compressed textures can be
+ *compressed online, by passing the compressed texture format enum as
+ *the internal format when uploading a texture using TexImage1D,
+ *TexImage2D or TexImage3D (see Section 3.9.3, Texture Image
+ *Specification, subsection Encoding of Special Internal Formats).
+ *
+ *Due to the complexity of the ASTC compression algorithm, it is not
+ *usually suitable for online use, and therefore ASTC support will be
+ *limited to pre-compressed textures only. Where on-device compression
+ *is required, a domain-specific limited

Mesa (master): mesa/teximage: return the base internal format of the ASTC formats

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: cd49b97a8a2c0dd8dc1d7f32b86f519e936571fd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cd49b97a8a2c0dd8dc1d7f32b86f519e936571fd

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Tue Apr 28 15:10:11 2015 -0700

mesa/teximage: return the base internal format of the ASTC formats

This is necesary to initialize the gl_texture_image struct.

From the KHR_texture_compression_astc_ldr spec:
  Added to Section 3.8.6, Compressed Texture Images

   Add the tokens specified above to Table 3.16, Compressed Internal Formats.
   In all cases, the base internal format will be RGBA. The encoding allows
   images to be encoded with fewer channels, but this is always presented as
   RGBA to the sampler.

v2. use _mesa_is_astc_format().

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/teximage.c |4 
 1 file changed, 4 insertions(+)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 56ae415..0535db3 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -565,6 +565,10 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint 
internalFormat )
   }
}
 
+   if (ctx-Extensions.KHR_texture_compression_astc_ldr 
+   _mesa_is_astc_format(internalFormat))
+ return GL_RGBA;
+
if (_mesa_is_gles3(ctx) || ctx-Extensions.ARB_ES3_compatibility) {
   switch (internalFormat) {
   case GL_COMPRESSED_RGB8_ETC2:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/formats: define the 2D ASTC formats

2015-08-26 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 8ae37365f30594498184fe5428f961a9c310fd8c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8ae37365f30594498184fe5428f961a9c310fd8c

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Tue May 19 10:35:39 2015 -0700

mesa/formats: define the 2D ASTC formats

Define the mesa formats and make changes necessary for compilation
without errors. Also add support for _mesa_get_srgb_format_linear().

v2. conform the ASTC MESA_FORMAT enums to the existing naming convention.
v3. remove ASTC cases for _mesa_get_uncompressed_format(). This function is
only used for generating mipmaps - something ASTC formats do not support
due to lack of online compression.

Reviewed-by: Anuj Phogat anuj.pho...@gmail.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/format_info.py |3 +++
 src/mesa/main/formats.c  |   43 ++
 src/mesa/main/formats.csv|   31 ++
 src/mesa/main/formats.h  |   31 ++
 src/mesa/swrast/s_texfetch.c |   32 ++-
 5 files changed, 139 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/format_info.py b/src/mesa/main/format_info.py
index 839d407..22eb5a7 100644
--- a/src/mesa/main/format_info.py
+++ b/src/mesa/main/format_info.py
@@ -122,6 +122,9 @@ def get_channel_bits(fmat, chan_name):
   elif fmat.layout == 'bptc':
  bits = 16 if fmat.name.endswith('_FLOAT') else 8
  return bits if fmat.has_channel(chan_name) else 0
+  elif fmat.layout == 'astc':
+ bits = 16 if 'RGBA' in fmat.name else 8
+ return bits if fmat.has_channel(chan_name) else 0
   else:
  assert False
else:
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 34a4434..587221c 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -197,6 +197,7 @@ _mesa_get_format_max_bits(mesa_format format)
  *MESA_FORMAT_LAYOUT_ETC1
  *MESA_FORMAT_LAYOUT_ETC2
  *MESA_FORMAT_LAYOUT_BPTC
+ *MESA_FORMAT_LAYOUT_ASTC
  *MESA_FORMAT_LAYOUT_OTHER
  */
 extern enum mesa_format_layout
@@ -663,6 +664,48 @@ _mesa_get_srgb_format_linear(mesa_format format)
case MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM:
   format = MESA_FORMAT_BPTC_RGBA_UNORM;
   break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4:
+  format = MESA_FORMAT_RGBA_ASTC_4x4;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x4:
+  format = MESA_FORMAT_RGBA_ASTC_5x4;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5:
+  format = MESA_FORMAT_RGBA_ASTC_5x5;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5:
+  format = MESA_FORMAT_RGBA_ASTC_6x5;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6:
+  format = MESA_FORMAT_RGBA_ASTC_6x6;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x5:
+  format = MESA_FORMAT_RGBA_ASTC_8x5;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x6:
+  format = MESA_FORMAT_RGBA_ASTC_8x6;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x8:
+  format = MESA_FORMAT_RGBA_ASTC_8x8;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x5:
+  format = MESA_FORMAT_RGBA_ASTC_10x5;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x6:
+  format = MESA_FORMAT_RGBA_ASTC_10x6;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x8:
+  format = MESA_FORMAT_RGBA_ASTC_10x8;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x10:
+  format = MESA_FORMAT_RGBA_ASTC_10x10;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x10:
+  format = MESA_FORMAT_RGBA_ASTC_12x10;
+  break;
+   case MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x12:
+  format = MESA_FORMAT_RGBA_ASTC_12x12;
+  break;
case MESA_FORMAT_B8G8R8X8_SRGB:
   format = MESA_FORMAT_B8G8R8X8_UNORM;
   break;
diff --git a/src/mesa/main/formats.csv b/src/mesa/main/formats.csv
index e159e7d..80729d9 100644
--- a/src/mesa/main/formats.csv
+++ b/src/mesa/main/formats.csv
@@ -301,3 +301,34 @@ MESA_FORMAT_BPTC_RGBA_UNORM   , bptc  , 4, 4, 
x128, , ,
 MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM , bptc  , 4, 4, x128, , ,
 , xyzw, srgb
 MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT , bptc  , 4, 4, x128, , ,
 , xyz1, rgb
 MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT   , bptc  , 4, 4, x128, , ,
 , xyz1, rgb
+
+# ASTC compressed formats
+MESA_FORMAT_RGBA_ASTC_4x4 , astc  , 4, 4, x128, , ,
 , xyzw, rgb
+MESA_FORMAT_RGBA_ASTC_5x4 , astc  , 5, 4, x128, , ,
 , xyzw, rgb
+MESA_FORMAT_RGBA_ASTC_5x5 , astc  , 5, 5, x128, , ,
 , xyzw, rgb
+MESA_FORMAT_RGBA_ASTC_6x5 , astc  , 6, 5, x128, , ,
 , xyzw, rgb
+MESA_FORMAT_RGBA_ASTC_6x6 , astc  , 6, 6, x128, , ,
 , xyzw, rgb
+MESA_FORMAT_RGBA_ASTC_8x5 , astc  , 8, 5, x128

Mesa (master): i965/chv|skl: Apply sampler bypass w/a

2015-08-31 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: d2e3638ef9e2ddf7e02b9fbe3fa8d40c63ebe5da
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d2e3638ef9e2ddf7e02b9fbe3fa8d40c63ebe5da

Author: Ben Widawsky <benjamin.widaw...@intel.com>
Date:   Wed Jul  8 17:04:10 2015 -0700

i965/chv|skl: Apply sampler bypass w/a

Certain compressed formats require this setting. The docs don't go into much
detail as to why it's needed exactly.

This patch introduces no piglit regressions on gen9 (bsw is untested). Note that
the SKL "regressions" are fixed tests, and the egl_khr_gl_colorspace tests are
WTF. The patch also fixes nothing I can find.
http://otc-mesa-ci.jf.intel.com/job/Leeroy/127820/

v2:
Reworded commit message (Matt); Added piglit results link.
Restructured condition (Matt)
Moved check out to function (Nanley). I left the setting of the bit in the
  surface state open coded because it seems to go better with the existing code.

v3:
Use and inline function only in gen8_emit_texture_surface_state() (Matt).

Cc: Matt Turner <matts...@gmail.com>
Cc: Nanley Chery <nanleych...@gmail.com>
Signed-off-by: Ben Widawsky <b...@bwidawsk.net>
Reviewed-by: Matt Turner <matts...@gmail.com>

---

 src/mesa/drivers/dri/i965/brw_defines.h|1 +
 src/mesa/drivers/dri/i965/gen8_surface_state.c |   14 ++
 2 files changed, 15 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_defines.h 
b/src/mesa/drivers/dri/i965/brw_defines.h
index cb5c82a..07fe198 100644
--- a/src/mesa/drivers/dri/i965/brw_defines.h
+++ b/src/mesa/drivers/dri/i965/brw_defines.h
@@ -276,6 +276,7 @@
 #define GEN8_SURFACE_TILING_W   (1 << 12)
 #define GEN8_SURFACE_TILING_X   (2 << 12)
 #define GEN8_SURFACE_TILING_Y   (3 << 12)
+#define GEN8_SURFACE_SAMPLER_L2_BYPASS_DISABLE  (1 << 9)
 #define BRW_SURFACE_RC_READ_WRITE  (1 << 8)
 #define BRW_SURFACE_MIPLAYOUT_SHIFT10
 #define BRW_SURFACE_MIPMAPLAYOUT_BELOW   0
diff --git a/src/mesa/drivers/dri/i965/gen8_surface_state.c 
b/src/mesa/drivers/dri/i965/gen8_surface_state.c
index 6c4d3e1..d2f333f 100644
--- a/src/mesa/drivers/dri/i965/gen8_surface_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_surface_state.c
@@ -238,6 +238,20 @@ gen8_emit_texture_surface_state(struct brw_context *brw,
   surf[0] |= BRW_SURFACE_CUBEFACE_ENABLES;
}
 
+   /* From the CHV PRM, Volume 2d, page 321 (RENDER_SURFACE_STATE dword 0
+* bit 9 "Sampler L2 Bypass Mode Disable" Programming Notes):
+*
+*This bit must be set for the following surface types: BC2_UNORM
+*BC3_UNORM BC5_UNORM BC5_SNORM BC7_UNORM
+*/
+   if ((brw->gen >= 9 || brw->is_cherryview) &&
+   (format == BRW_SURFACEFORMAT_BC2_UNORM ||
+format == BRW_SURFACEFORMAT_BC3_UNORM ||
+format == BRW_SURFACEFORMAT_BC5_UNORM ||
+format == BRW_SURFACEFORMAT_BC5_SNORM ||
+format == BRW_SURFACEFORMAT_BC7_UNORM))
+  surf[0] |= GEN8_SURFACE_SAMPLER_L2_BYPASS_DISABLE;
+
if (_mesa_is_array_texture(target) || target == GL_TEXTURE_CUBE_MAP)
   surf[0] |= GEN8_SURFACE_IS_ARRAY;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/texformat: use format conversion function in _mesa_choose_tex_format

2015-08-31 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 76f17266ec68c644b2609d355018329636ae8e75
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=76f17266ec68c644b2609d355018329636ae8e75

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Aug 12 14:41:50 2015 -0700

mesa/texformat: use format conversion function in _mesa_choose_tex_format

This function's cases for non-generic compressed formats duplicate
the GL to MESA translation in _mesa_glenum_to_compressed_format().
This patch replaces the switch cases with a call to the translation
function. This change teaches this function about ASTC, thus enabling
ASTC for glTex*Storage*() calls.

Reviewed-by: Chad Versace <chad.vers...@intel.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/texformat.c |   94 +++--
 1 file changed, 13 insertions(+), 81 deletions(-)

diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
index f4d17e1..fd9f335 100644
--- a/src/mesa/main/texformat.c
+++ b/src/mesa/main/texformat.c
@@ -38,6 +38,7 @@
 #include "mtypes.h"
 #include "texcompress.h"
 #include "texformat.h"
+#include "glformats.h"
 
 #define RETURN_IF_SUPPORTED(f) do {\
if (ctx->TextureFormatSupported[f]) \
@@ -276,87 +277,6 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum 
target,
  RETURN_IF_SUPPORTED(MESA_FORMAT_YCBCR_REV);
   break;
 
-   /* For non-generic compressed format we assert two things:
-*
-* 1. The format has already been validated against the set of available
-*extensions.
-*
-* 2. The driver only enables the extension if it supports all of the
-*formats that are part of that extension.
-*/
-   case GL_COMPRESSED_RGB_FXT1_3DFX:
-  return MESA_FORMAT_RGB_FXT1;
-   case GL_COMPRESSED_RGBA_FXT1_3DFX:
-  return MESA_FORMAT_RGBA_FXT1;
-   case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
-   case GL_RGB_S3TC:
-   case GL_RGB4_S3TC:
-  return MESA_FORMAT_RGB_DXT1;
-   case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-  return MESA_FORMAT_RGBA_DXT1;
-   case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
-   case GL_RGBA_S3TC:
-   case GL_RGBA4_S3TC:
-  return MESA_FORMAT_RGBA_DXT3;
-   case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
-  return MESA_FORMAT_RGBA_DXT5;
-   case GL_COMPRESSED_RED_RGTC1:
-  return MESA_FORMAT_R_RGTC1_UNORM;
-   case GL_COMPRESSED_SIGNED_RED_RGTC1:
-  return MESA_FORMAT_R_RGTC1_SNORM;
-   case GL_COMPRESSED_RG_RGTC2:
-  return MESA_FORMAT_RG_RGTC2_UNORM;
-   case GL_COMPRESSED_SIGNED_RG_RGTC2:
-  return MESA_FORMAT_RG_RGTC2_SNORM;
-   case GL_COMPRESSED_LUMINANCE_LATC1_EXT:
-  return MESA_FORMAT_L_LATC1_UNORM;
-   case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT:
-  return MESA_FORMAT_L_LATC1_SNORM;
-   case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT:
-  return MESA_FORMAT_LA_LATC2_UNORM;
-   case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT:
-  return MESA_FORMAT_LA_LATC2_SNORM;
-   case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:
-  return MESA_FORMAT_LA_LATC2_UNORM;
-   case GL_ETC1_RGB8_OES:
-  return MESA_FORMAT_ETC1_RGB8;
-   case GL_COMPRESSED_RGB8_ETC2:
-  return MESA_FORMAT_ETC2_RGB8;
-   case GL_COMPRESSED_SRGB8_ETC2:
-  return MESA_FORMAT_ETC2_SRGB8;
-   case GL_COMPRESSED_RGBA8_ETC2_EAC:
-  return MESA_FORMAT_ETC2_RGBA8_EAC;
-   case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
-  return MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC;
-   case GL_COMPRESSED_R11_EAC:
-  return MESA_FORMAT_ETC2_R11_EAC;
-   case GL_COMPRESSED_RG11_EAC:
-  return MESA_FORMAT_ETC2_RG11_EAC;
-   case GL_COMPRESSED_SIGNED_R11_EAC:
-  return MESA_FORMAT_ETC2_SIGNED_R11_EAC;
-   case GL_COMPRESSED_SIGNED_RG11_EAC:
-  return MESA_FORMAT_ETC2_SIGNED_RG11_EAC;
-   case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
-  return MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1;
-   case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
-  return MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1;
-   case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
-  return MESA_FORMAT_SRGB_DXT1;
-   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
-  return MESA_FORMAT_SRGBA_DXT1;
-   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
-  return MESA_FORMAT_SRGBA_DXT3;
-   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
-  return MESA_FORMAT_SRGBA_DXT5;
-   case GL_COMPRESSED_RGBA_BPTC_UNORM:
-  return MESA_FORMAT_BPTC_RGBA_UNORM;
-   case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:
-  return MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM;
-   case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:
-  return MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT;
-   case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:
-  return MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT;
-
case GL_ALPHA16F_ARB:
   RETURN_IF_SUPPORTED(MESA_FORMAT_A_FLOAT16);
   RETURN_IF_SUPPORTED(MESA_FORMAT_A_FLOAT32);
@@ -844,6 +764,18 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum 
target,
case G

Mesa (master): mesa/texcompress: correct mapping of S3TC formats in conversion function

2015-08-31 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 01024ded1e791b33353ffa09d4e3dfb5b638179d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=01024ded1e791b33353ffa09d4e3dfb5b638179d

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Aug 26 12:01:38 2015 -0700

mesa/texcompress: correct mapping of S3TC formats in conversion function

MESA_FORMAT_RGBA_DXT5 should actually be reserved for GL_RGBA[4]_DXT5_S3TC.
Also, Gallium and other dri drivers (radeon and nouveau) follow this mapping
scheme.

Reviewed-by: Chad Versace <chad.vers...@intel.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/texcompress.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
index bb94137..394c8ba 100644
--- a/src/mesa/main/texcompress.c
+++ b/src/mesa/main/texcompress.c
@@ -400,15 +400,15 @@ _mesa_glenum_to_compressed_format(GLenum format)
 
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
case GL_RGB_S3TC:
+   case GL_RGB4_S3TC:
   return MESA_FORMAT_RGB_DXT1;
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-   case GL_RGB4_S3TC:
   return MESA_FORMAT_RGBA_DXT1;
case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
case GL_RGBA_S3TC:
+   case GL_RGBA4_S3TC:
   return MESA_FORMAT_RGBA_DXT3;
case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
-   case GL_RGBA4_S3TC:
   return MESA_FORMAT_RGBA_DXT5;
 
case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: advertise ASTC support for Skylake

2015-08-31 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: f3a483069a6f0d38c10cec88417ae2b5b5aa3392
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f3a483069a6f0d38c10cec88417ae2b5b5aa3392

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue May 19 12:28:20 2015 -0700

i965: advertise ASTC support for Skylake

v2: remove OES ASTC extension reference.

Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/drivers/dri/i965/intel_extensions.c |5 +
 1 file changed, 5 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c 
b/src/mesa/drivers/dri/i965/intel_extensions.c
index 4365b71..3c764be 100644
--- a/src/mesa/drivers/dri/i965/intel_extensions.c
+++ b/src/mesa/drivers/dri/i965/intel_extensions.c
@@ -354,6 +354,11 @@ intelInitExtensions(struct gl_context *ctx)
   ctx->Extensions.ARB_stencil_texturing = true;
}
 
+   if (brw->gen >= 9) {
+  ctx->Extensions.KHR_texture_compression_astc_ldr = true;
+  ctx->Extensions.KHR_texture_compression_astc_hdr = true;
+   }
+
if (ctx->API == API_OPENGL_CORE)
   ctx->Extensions.ARB_base_instance = true;
if (ctx->API != API_OPENGL_CORE)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/glformats: recognize ASTC formats as color formats

2015-08-31 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: be7f640257e832a5161645f3dfcbd9acace6931e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=be7f640257e832a5161645f3dfcbd9acace6931e

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Aug 31 16:38:09 2015 -0700

mesa/glformats: recognize ASTC formats as color formats

ASTC formats contain RGBA components.

Reviewed-by: Chad Versace <chad.vers...@intel.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/glformats.c |   28 
 1 file changed, 28 insertions(+)

diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index ce66699..3d12a01 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -1044,6 +1044,34 @@ _mesa_is_color_format(GLenum format)
   case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:
   case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:
   case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:
+  case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
+  case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
+  case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
   /* generic integer formats */
   case GL_RED_INTEGER_EXT:
   case GL_GREEN_INTEGER_EXT:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/formats: make format testing a gtest

2015-08-25 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 8e581747d2342950ff44488064eef53768b3ae82
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e581747d2342950ff44488064eef53768b3ae82

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Tue Aug 18 12:42:57 2015 -0700

mesa/formats: make format testing a gtest

We currently check that our format info table is sane during context
initialization in debug builds. Perform this check during
`make check` instead. This enables format testing in release builds
and removes the requirement of an exhuastive switch for
_mesa_uncompressed_format_to_type_and_comps().

v2. indentation and conditional inclusion fixes (Chad).
allow tests to continue running if any format fails
and display the failing format name.

Reviewed-by: Chad Versace chad.vers...@intel.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/context.c  |4 -
 src/mesa/main/formats.c  |  155 +-
 src/mesa/main/tests/Makefile.am  |1 +
 src/mesa/main/tests/mesa_formats.cpp |  132 +
 4 files changed, 137 insertions(+), 155 deletions(-)

diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index 888c461..be542dd 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -402,10 +402,6 @@ one_time_init( struct gl_context *ctx )
 PACKAGE_VERSION, __DATE__, __TIME__);
   }
 #endif
-
-#ifdef DEBUG
-  _mesa_test_formats();
-#endif
}
 
/* per-API one-time init */
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 5e1d9a6..54d87c7 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -83,6 +83,7 @@ static const struct gl_format_info *
 _mesa_get_format_info(mesa_format format)
 {
const struct gl_format_info *info = format_info[format];
+   STATIC_ASSERT(ARRAY_SIZE(format_info) == MESA_FORMAT_COUNT);
assert(info-Name == format);
return info;
 }
@@ -864,118 +865,6 @@ _mesa_format_row_stride(mesa_format format, GLsizei width)
 }
 
 
-/**
- * Debug/test: check that all uncompressed formats are handled in the
- * _mesa_uncompressed_format_to_type_and_comps() function. When new pixel
- * formats are added to Mesa, that function needs to be updated.
- * This is a no-op after the first call.
- */
-static void
-check_format_to_type_and_comps(void)
-{
-   mesa_format f;
-
-   for (f = MESA_FORMAT_NONE + 1; f  MESA_FORMAT_COUNT; f++) {
-  GLenum datatype = 0;
-  GLuint comps = 0;
-  /* This function will emit a problem/warning if the format is
-   * not handled.
-   */
-  if (!_mesa_is_format_compressed(f))
- _mesa_uncompressed_format_to_type_and_comps(f, datatype, comps);
-   }
-}
-
-/**
- * Do sanity checking of the format info table.
- */
-void
-_mesa_test_formats(void)
-{
-   GLuint i;
-
-   STATIC_ASSERT(ARRAY_SIZE(format_info) == MESA_FORMAT_COUNT);
-
-   for (i = 0; i  MESA_FORMAT_COUNT; i++) {
-  const struct gl_format_info *info = _mesa_get_format_info(i);
-  assert(info);
-
-  assert(info-Name == i);
-
-  if (info-Name == MESA_FORMAT_NONE)
- continue;
-
-  if (info-BlockWidth == 1  info-BlockHeight == 1) {
- if (info-RedBits  0) {
-GLuint t = info-RedBits + info-GreenBits
-   + info-BlueBits + info-AlphaBits;
-assert(t / 8 = info-BytesPerBlock);
-(void) t;
- }
-  }
-
-  assert(info-DataType == GL_UNSIGNED_NORMALIZED ||
- info-DataType == GL_SIGNED_NORMALIZED ||
- info-DataType == GL_UNSIGNED_INT ||
- info-DataType == GL_INT ||
- info-DataType == GL_FLOAT ||
- /* Z32_FLOAT_X24S8 has DataType of GL_NONE */
- info-DataType == GL_NONE);
-
-  if (info-BaseFormat == GL_RGB) {
- assert(info-RedBits  0);
- assert(info-GreenBits  0);
- assert(info-BlueBits  0);
- assert(info-AlphaBits == 0);
- assert(info-LuminanceBits == 0);
- assert(info-IntensityBits == 0);
-  }
-  else if (info-BaseFormat == GL_RGBA) {
- assert(info-RedBits  0);
- assert(info-GreenBits  0);
- assert(info-BlueBits  0);
- assert(info-AlphaBits  0);
- assert(info-LuminanceBits == 0);
- assert(info-IntensityBits == 0);
-  }
-  else if (info-BaseFormat == GL_RG) {
- assert(info-RedBits  0);
- assert(info-GreenBits  0);
- assert(info-BlueBits == 0);
- assert(info-AlphaBits == 0);
- assert(info-LuminanceBits == 0);
- assert(info-IntensityBits == 0);
-  }
-  else if (info-BaseFormat == GL_RED) {
- assert(info-RedBits  0);
- assert(info-GreenBits == 0);
- assert(info-BlueBits == 0);
- assert(info-AlphaBits == 0);
- assert(info-LuminanceBits == 0);
- assert(info-IntensityBits == 0);
-  }
-  else if (info-BaseFormat

Mesa (master): mesa/formats: remove compressed formats from matching function

2015-08-25 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 26c549e69d12e44e2e36c09764ce2cceab262a1b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=26c549e69d12e44e2e36c09764ce2cceab262a1b

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Fri Jul 31 10:26:36 2015 -0700

mesa/formats: remove compressed formats from matching function

All compressed formats return GL_FALSE and there isn't any evidence to
support that this behaviour would change. Remove all switch cases for
compressed formats.

v2. Since the exhaustive switch is removed, add a gtest to ensure
all formats are handled.
v3. Ensure that GL_NO_ERROR is set before returning.
v4. Fix an arg to _mesa_uncompressed_format_to_type_and_comps();
fix formatting and misc improvements (Chad).

Reviewed-by: Chad Versace chad.vers...@intel.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/drivers/dri/i915/intel_pixel_read.c |2 +-
 src/mesa/drivers/dri/i915/intel_tex_image.c  |2 +-
 src/mesa/main/formats.c  |   58 +-
 src/mesa/main/formats.h  |2 +-
 src/mesa/main/readpix.c  |2 +-
 src/mesa/main/tests/mesa_formats.cpp |9 +++-
 src/mesa/main/texgetimage.c  |2 +-
 src/mesa/main/texstore.c |2 +-
 src/mesa/state_tracker/st_cb_readpixels.c|2 +-
 src/mesa/state_tracker/st_cb_texture.c   |6 +--
 src/mesa/state_tracker/st_format.c   |2 +-
 src/mesa/swrast/s_drawpix.c  |2 +-
 12 files changed, 31 insertions(+), 60 deletions(-)

diff --git a/src/mesa/drivers/dri/i915/intel_pixel_read.c 
b/src/mesa/drivers/dri/i915/intel_pixel_read.c
index 149e921..e6fa8f2 100644
--- a/src/mesa/drivers/dri/i915/intel_pixel_read.c
+++ b/src/mesa/drivers/dri/i915/intel_pixel_read.c
@@ -91,7 +91,7 @@ do_blit_readpixels(struct gl_context * ctx,
 
if (ctx-_ImageTransferState ||
!_mesa_format_matches_format_and_type(irb-mt-format, format, type,
- false)) {
+ false, NULL)) {
   DBG(%s - bad format for blit\n, __func__);
   return false;
}
diff --git a/src/mesa/drivers/dri/i915/intel_tex_image.c 
b/src/mesa/drivers/dri/i915/intel_tex_image.c
index 0a213e9..5ab60d1 100644
--- a/src/mesa/drivers/dri/i915/intel_tex_image.c
+++ b/src/mesa/drivers/dri/i915/intel_tex_image.c
@@ -134,7 +134,7 @@ try_pbo_upload(struct gl_context *ctx,
}
 
if (!_mesa_format_matches_format_and_type(intelImage-mt-format,
- format, type, false)) {
+ format, type, false, NULL)) {
   DBG(%s: format mismatch (upload to %s with format 0x%x, type 0x%x)\n,
  __func__, _mesa_get_format_name(intelImage-mt-format),
  format, type);
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 54d87c7..8dd07d8 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -1420,20 +1420,26 @@ _mesa_uncompressed_format_to_type_and_comps(mesa_format 
format,
  * \param format  the user-specified image format
  * \param type  the user-specified image datatype
  * \param swapBytes  typically the current pixel pack/unpack byteswap state
+ * \param[out] error GL_NO_ERROR if format is an expected input.
+ *   GL_INVALID_ENUM if format is an unexpected input.
  * \return GL_TRUE if the formats match, GL_FALSE otherwise.
  */
 GLboolean
 _mesa_format_matches_format_and_type(mesa_format mesa_format,
 GLenum format, GLenum type,
- GLboolean swapBytes)
+GLboolean swapBytes, GLenum *error)
 {
const GLboolean littleEndian = _mesa_little_endian();
+   if (error)
+  *error = GL_NO_ERROR;
 
/* Note: When reading a GL format/type combination, the format lists channel
 * assignments from most significant channel in the type to least
 * significant.  A type with _REV indicates that the assignments are
 * swapped, so they are listed from least significant to most significant.
 *
+* Compressed formats will fall through and return GL_FALSE.
+*
 * For sanity, please keep this switch statement ordered the same as the
 * enums in formats.h.
 */
@@ -1694,26 +1700,6 @@ _mesa_format_matches_format_and_type(mesa_format 
mesa_format,
case MESA_FORMAT_S_UINT8:
   return format == GL_STENCIL_INDEX  type == GL_UNSIGNED_BYTE;
 
-   case MESA_FORMAT_SRGB_DXT1:
-   case MESA_FORMAT_SRGBA_DXT1:
-   case MESA_FORMAT_SRGBA_DXT3:
-   case MESA_FORMAT_SRGBA_DXT5:
-  return GL_FALSE;
-
-   case MESA_FORMAT_RGB_FXT1:
-   case MESA_FORMAT_RGBA_FXT1:
-   case MESA_FORMAT_RGB_DXT1:
-   case MESA_FORMAT_RGBA_DXT1:
-   case MESA_FORMAT_RGBA_DXT3:
-   case MESA_FORMAT_RGBA_DXT5:
-  return GL_FALSE;
-
-   case MESA_FORMAT_BPTC_RGBA_UNORM

Mesa (master): mesa/teximage: Add GL error parameter to _mesa_target_can_be_compressed

2015-08-25 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 1d2a844e7d55645ea3d24fb589bec03695b3d2b1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d2a844e7d55645ea3d24fb589bec03695b3d2b1

Author: Nanley Chery nanley.g.ch...@intel.com
Date:   Fri Aug 21 13:09:08 2015 -0700

mesa/teximage: Add GL error parameter to _mesa_target_can_be_compressed

Enables _mesa_target_can_be_compressed to return the appropriate GL error
depending on it's inputs. Use the parameter to return the appropriate GL error
for ETC2 formats on GLES3.

Suggested-by: Chad Versace chad.vers...@intel.com
Reviewed-by: Chad Versace chad.vers...@intel.com
Signed-off-by: Nanley Chery nanley.g.ch...@intel.com

---

 src/mesa/main/teximage.c   |   90 ++--
 src/mesa/main/teximage.h   |2 +-
 src/mesa/main/texstorage.c |   20 +++---
 3 files changed, 68 insertions(+), 44 deletions(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 6a5489e..274ecad 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -1785,18 +1785,36 @@ compressedteximage_only_format(const struct gl_context 
*ctx, GLenum format)
 }
 
 
+/* Writes to an GL error pointer if non-null and returns whether or not the
+ * error is GL_NO_ERROR */
+static bool
+write_error(GLenum *err_ptr, GLenum error)
+{
+   if (err_ptr)
+  *err_ptr = error;
+
+   return error == GL_NO_ERROR;
+}
+
 /**
  * Helper function to determine whether a target and specific compression
- * format are supported.
+ * format are supported. The error parameter returns GL_NO_ERROR if the
+ * target can be compressed. Otherwise it returns either GL_INVALID_OPERATION
+ * or GL_INVALID_ENUM, whichever is more appropriate.
  */
 GLboolean
 _mesa_target_can_be_compressed(const struct gl_context *ctx, GLenum target,
-   GLenum intFormat)
+   GLenum intFormat, GLenum *error)
 {
+   GLboolean target_can_be_compresed = GL_FALSE;
+   mesa_format format = _mesa_glenum_to_compressed_format(intFormat);
+   enum mesa_format_layout layout = _mesa_get_format_layout(format);
+
switch (target) {
case GL_TEXTURE_2D:
case GL_PROXY_TEXTURE_2D:
-  return GL_TRUE; /* true for any compressed format so far */
+  target_can_be_compresed = GL_TRUE; /* true for any compressed format so 
far */
+  break;
case GL_PROXY_TEXTURE_CUBE_MAP:
case GL_TEXTURE_CUBE_MAP:
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
@@ -1805,26 +1823,46 @@ _mesa_target_can_be_compressed(const struct gl_context 
*ctx, GLenum target,
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
-  return ctx-Extensions.ARB_texture_cube_map;
+  target_can_be_compresed = ctx-Extensions.ARB_texture_cube_map;
+  break;
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
case GL_TEXTURE_2D_ARRAY_EXT:
-  return ctx-Extensions.EXT_texture_array;
+  target_can_be_compresed = ctx-Extensions.EXT_texture_array;
+  break;
case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY:
case GL_TEXTURE_CUBE_MAP_ARRAY:
-  return ctx-Extensions.ARB_texture_cube_map_array;
+  /* From section 3.8.6, page 146 of OpenGL ES 3.0 spec:
+   *
+   *The ETC2/EAC texture compression algorithm supports only
+   * two-dimensional images. If internalformat is an ETC2/EAC format,
+   * glCompressedTexImage3D will generate an INVALID_OPERATION error if
+   * target is not TEXTURE_2D_ARRAY.
+   *
+   * This should also be applicable for glTexStorage3D(). Other available
+   * targets for these functions are: TEXTURE_3D and 
TEXTURE_CUBE_MAP_ARRAY.
+   */
+  if (layout == MESA_FORMAT_LAYOUT_ETC2  _mesa_is_gles3(ctx))
+return write_error(error, GL_INVALID_OPERATION);
+
+  target_can_be_compresed = ctx-Extensions.ARB_texture_cube_map_array;
+  break;
case GL_TEXTURE_3D:
-  switch (intFormat) {
-  case GL_COMPRESSED_RGBA_BPTC_UNORM:
-  case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:
-  case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:
-  case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:
- return ctx-Extensions.ARB_texture_compression_bptc;
-  default:
- return GL_FALSE;
+
+  /* See ETC2/EAC comment in switch case GL_TEXTURE_CUBE_MAP_ARRAY. */
+  if (layout == MESA_FORMAT_LAYOUT_ETC2  _mesa_is_gles3(ctx))
+ return write_error(error, GL_INVALID_OPERATION);
+
+  if (layout == MESA_FORMAT_LAYOUT_BPTC) {
+ target_can_be_compresed = 
ctx-Extensions.ARB_texture_compression_bptc;
+ break;
   }
+
+  break;
default:
-  return GL_FALSE;
+  break;
}
+   return write_error(error,
+  target_can_be_compresed ? GL_NO_ERROR : GL_INVALID_ENUM);
 }
 
 
@@ -2284,8 +2322,9 @@ texture_error_check( struct gl_context *ctx,
 
/* additional checks for compressed textures */
if (_mesa_is_compressed_format(ctx, internalFormat

Mesa (master): mesa/extensions: restrict luminance alpha formats to API_OPENGL_COMPAT

2015-09-15 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: fe796a18319d791f3ed3865761452474b1c0477f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fe796a18319d791f3ed3865761452474b1c0477f

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Aug 27 16:05:22 2015 -0700

mesa/extensions: restrict luminance alpha formats to API_OPENGL_COMPAT

According the GL 3.1 spec, luminance alpha formats are deprecated.

Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/extensions.c |4 ++--
 src/mesa/main/teximage.c   |6 --
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 1f7d542..b2c88c3 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -263,7 +263,7 @@ static const struct extension extension_table[] = {
{ "GL_EXT_texture_compression_dxt1",
o(ANGLE_texture_compression_dxt),   GL | ES1 | ES2, 2004 },
{ "GL_ANGLE_texture_compression_dxt3",  
o(ANGLE_texture_compression_dxt),   GL | ES1 | ES2, 2011 },
{ "GL_ANGLE_texture_compression_dxt5",  
o(ANGLE_texture_compression_dxt),   GL | ES1 | ES2, 2011 },
-   { "GL_EXT_texture_compression_latc",
o(EXT_texture_compression_latc),GL, 2006 },
+   { "GL_EXT_texture_compression_latc",
o(EXT_texture_compression_latc),GLL,2006 },
{ "GL_EXT_texture_compression_rgtc",
o(ARB_texture_compression_rgtc),GL, 2004 },
{ "GL_EXT_texture_compression_s3tc",
o(EXT_texture_compression_s3tc),GL, 2000 },
{ "GL_EXT_texture_cube_map",o(ARB_texture_cube_map),
GLL,2001 },
@@ -366,7 +366,7 @@ static const struct extension extension_table[] = {
{ "GL_ATI_draw_buffers",o(dummy_true),  
GLL,2002 },
{ "GL_ATI_fragment_shader", o(ATI_fragment_shader), 
GLL,2001 },
{ "GL_ATI_separate_stencil",o(ATI_separate_stencil),
GLL,2006 },
-   { "GL_ATI_texture_compression_3dc", 
o(ATI_texture_compression_3dc), GL, 2004 },
+   { "GL_ATI_texture_compression_3dc", 
o(ATI_texture_compression_3dc), GLL,2004 },
{ "GL_ATI_texture_env_combine3",
o(ATI_texture_env_combine3),GLL,2002 },
{ "GL_ATI_texture_float",   o(ARB_texture_float),   
GL, 2002 },
{ "GL_ATI_texture_mirror_once", o(ATI_texture_mirror_once), 
GL, 2006 },
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index bfb0858..ff844cd 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -534,7 +534,8 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint 
internalFormat )
   }
}
 
-   if (ctx->Extensions.EXT_texture_compression_latc) {
+   if (ctx->API == API_OPENGL_COMPAT &&
+   ctx->Extensions.EXT_texture_compression_latc) {
   switch (internalFormat) {
   case GL_COMPRESSED_LUMINANCE_LATC1_EXT:
   case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT:
@@ -547,7 +548,8 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint 
internalFormat )
   }
}
 
-   if (ctx->Extensions.ATI_texture_compression_3dc) {
+   if (ctx->API == API_OPENGL_COMPAT &&
+   ctx->Extensions.ATI_texture_compression_3dc) {
   switch (internalFormat) {
   case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:
  return GL_LUMINANCE_ALPHA;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/teximage: restrict GL_ETC1_RGB8_OES support to GLES

2015-09-15 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 82007936491d5fb99cdc5ea18c076e8a896a4a1e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=82007936491d5fb99cdc5ea18c076e8a896a4a1e

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Aug 27 16:05:22 2015 -0700

mesa/teximage: restrict GL_ETC1_RGB8_OES support to GLES

According to the extensions table and our glext headers,
OES_compressed_ETC1_RGB8_texture is only supported in
GLES1 and GLES2. Since we may give users a GLES3 context
when a GLES2 context is requested, we also allow this
extension for GLES3 as well.

Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/teximage.c |3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index ff844cd..2a4d29d 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -558,7 +558,8 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint 
internalFormat )
   }
}
 
-   if (ctx->Extensions.OES_compressed_ETC1_RGB8_texture) {
+   if (_mesa_is_gles(ctx) &&
+  ctx->Extensions.OES_compressed_ETC1_RGB8_texture) {
   switch (internalFormat) {
   case GL_ETC1_RGB8_OES:
  return GL_RGB;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/extensions: restrict GL_OES_EGL_image to GLES

2015-09-15 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 48961fa3ba37999a6f8fd812458b735e39604a95
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=48961fa3ba37999a6f8fd812458b735e39604a95

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Sep 10 10:48:46 2015 -0700

mesa/extensions: restrict GL_OES_EGL_image to GLES

Driver vendors do this as well. The extension specification
lists GLES 1.1 or 2.0 as requirements.

Reviewed-by: Chad Versace <chad.vers...@intel.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/extensions.c |3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index b2c88c3..767c50e 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -307,8 +307,7 @@ static const struct extension extension_table[] = {
{ "GL_OES_depth_texture_cube_map",  
o(OES_depth_texture_cube_map), ES2, 2012 },
{ "GL_OES_draw_texture",o(OES_draw_texture),
 ES1,   2004 },
{ "GL_OES_EGL_sync",o(dummy_true),  
 ES1 | ES2, 2010 },
-   /*  FIXME: Mesa expects GL_OES_EGL_image to be available in OpenGL 
contexts. */
-   { "GL_OES_EGL_image",   o(OES_EGL_image),   
GL | ES1 | ES2, 2006 },
+   { "GL_OES_EGL_image",   o(OES_EGL_image),   
 ES1 | ES2, 2006 },
{ "GL_OES_EGL_image_external",  o(OES_EGL_image_external),  
 ES1 | ES2, 2010 },
{ "GL_OES_element_index_uint",  o(dummy_true),  
 ES1 | ES2, 2005 },
{ "GL_OES_fbo_render_mipmap",   o(dummy_true),  
 ES1 | ES2, 2005 },

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/teximage: reuse compressed format utility functions for base_format

2015-09-19 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 99b1f4751f97631011b64fabcb57acf6beae01ac
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=99b1f4751f97631011b64fabcb57acf6beae01ac

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Aug 27 16:29:06 2015 -0700

mesa/teximage: reuse compressed format utility functions for base_format

Reuse utility functions instead of reimplementing the same logic.

* _mesa_is_compressed_format() performs the required checking to
  determine format support in the current context.
* _mesa_gl_compressed_format_base_format() returns the base format.

As a side effect, we now check that we're in a desktop context when
determining support for the FXT1 and RGTC formats. This is in agreement
with our extension table and the glext headers.

Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/teximage.c |  150 ++
 1 file changed, 5 insertions(+), 145 deletions(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 2a4d29d..8913a72 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -252,44 +252,11 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint 
internalFormat )
   ; /* fallthrough */
}
 
-   if (ctx->Extensions.TDFX_texture_compression_FXT1) {
-  switch (internalFormat) {
-  case GL_COMPRESSED_RGB_FXT1_3DFX:
- return GL_RGB;
-  case GL_COMPRESSED_RGBA_FXT1_3DFX:
- return GL_RGBA;
-  default:
- ; /* fallthrough */
-  }
-   }
-
-   /* Assume that the ANGLE flag will always be set if the EXT flag is set.
-*/
-   if (ctx->Extensions.ANGLE_texture_compression_dxt) {
-  switch (internalFormat) {
-  case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
- return GL_RGB;
-  case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-  case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
-  case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
- return GL_RGBA;
-  default:
- ; /* fallthrough */
-  }
-   }
-
-   if (_mesa_is_desktop_gl(ctx)
-   && ctx->Extensions.ANGLE_texture_compression_dxt) {
-  switch (internalFormat) {
-  case GL_RGB_S3TC:
-  case GL_RGB4_S3TC:
- return GL_RGB;
-  case GL_RGBA_S3TC:
-  case GL_RGBA4_S3TC:
- return GL_RGBA;
-  default:
- ; /* fallthrough */
-  }
+   if (_mesa_is_compressed_format(ctx, internalFormat)) {
+  GLenum base_compressed =
+ _mesa_gl_compressed_format_base_format(internalFormat);
+  if (base_compressed)
+return base_compressed;
}
 
if (ctx->Extensions.MESA_ycbcr_texture) {
@@ -367,16 +334,10 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint 
internalFormat )
   case GL_SRGB8_EXT:
   case GL_COMPRESSED_SRGB_EXT:
  return GL_RGB;
-  case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
- return ctx->Extensions.EXT_texture_compression_s3tc ? GL_RGB : -1;
   case GL_SRGB_ALPHA_EXT:
   case GL_SRGB8_ALPHA8_EXT:
   case GL_COMPRESSED_SRGB_ALPHA_EXT:
  return GL_RGBA;
-  case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
-  case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
-  case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
- return ctx->Extensions.EXT_texture_compression_s3tc ? GL_RGBA : -1;
   case GL_SLUMINANCE_ALPHA_EXT:
   case GL_SLUMINANCE8_ALPHA8_EXT:
   case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
@@ -521,111 +482,10 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint 
internalFormat )
   }
}
 
-   if (ctx->Extensions.ARB_texture_compression_rgtc) {
-  switch (internalFormat) {
-  case GL_COMPRESSED_RED_RGTC1:
-  case GL_COMPRESSED_SIGNED_RED_RGTC1:
- return GL_RED;
-  case GL_COMPRESSED_RG_RGTC2:
-  case GL_COMPRESSED_SIGNED_RG_RGTC2:
- return GL_RG;
-  default:
- ; /* fallthrough */
-  }
-   }
-
-   if (ctx->API == API_OPENGL_COMPAT &&
-   ctx->Extensions.EXT_texture_compression_latc) {
-  switch (internalFormat) {
-  case GL_COMPRESSED_LUMINANCE_LATC1_EXT:
-  case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT:
- return GL_LUMINANCE;
-  case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT:
-  case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT:
- return GL_LUMINANCE_ALPHA;
-  default:
- ; /* fallthrough */
-  }
-   }
-
-   if (ctx->API == API_OPENGL_COMPAT &&
-   ctx->Extensions.ATI_texture_compression_3dc) {
-  switch (internalFormat) {
-  case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:
- return GL_LUMINANCE_ALPHA;
-  default:
- ; /* fallthrough */
-  }
-   }
-
-   if (_mesa_is_gles(ctx) &&
-  ctx->Extensions.OES_compressed_ETC1_RGB8_texture) {
-  switch (internalFormat) {
-  case GL_ETC1_RGB8_OES:
- return GL_RGB;
-  default:
- ; /* fa

Mesa (master): mesa/glformats: refactor compressed format support function

2015-09-19 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 29835fe19e0ca73a8017427498056ff7eb713cdd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=29835fe19e0ca73a8017427498056ff7eb713cdd

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Aug 26 16:36:11 2015 -0700

mesa/glformats: refactor compressed format support function

Instead of case statements, use _mesa_get_format_layout() to
determine if a GL format is part of a family of compressed formats.

v2. restrict LATC formats to API_OPENGL_COMPAT (Ilia).
rename the variable mFormat to m_format.

Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/glformats.c |  119 +++--
 1 file changed, 40 insertions(+), 79 deletions(-)

diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index eb4a02a..6cfffdb 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -28,6 +28,7 @@
 #include "context.h"
 #include "glformats.h"
 #include "formats.h"
+#include "texcompress.h"
 #include "enums.h"
 
 enum {
@@ -1272,95 +1273,22 @@ _mesa_is_depth_or_stencil_format(GLenum format)
 GLboolean
 _mesa_is_compressed_format(const struct gl_context *ctx, GLenum format)
 {
+   mesa_format m_format = _mesa_glenum_to_compressed_format(format);
+
+   /* Some formats in this switch have an equivalent mesa_format_layout
+* to the compressed formats in the layout switch below and thus
+* must be handled first.
+*/
switch (format) {
-   case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
-   case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-   case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
-   case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
-  /* Assume that the ANGLE flag will always be set if the EXT flag is set.
-   */
-  return ctx->Extensions.ANGLE_texture_compression_dxt;
case GL_RGB_S3TC:
case GL_RGB4_S3TC:
case GL_RGBA_S3TC:
case GL_RGBA4_S3TC:
   return _mesa_is_desktop_gl(ctx) &&
  ctx->Extensions.ANGLE_texture_compression_dxt;
-   case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
-   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
-   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
-   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
-  return _mesa_is_desktop_gl(ctx)
- && ctx->Extensions.EXT_texture_sRGB
- && ctx->Extensions.EXT_texture_compression_s3tc;
-   case GL_COMPRESSED_RGB_FXT1_3DFX:
-   case GL_COMPRESSED_RGBA_FXT1_3DFX:
-  return _mesa_is_desktop_gl(ctx)
- && ctx->Extensions.TDFX_texture_compression_FXT1;
-   case GL_COMPRESSED_RED_RGTC1:
-   case GL_COMPRESSED_SIGNED_RED_RGTC1:
-   case GL_COMPRESSED_RG_RGTC2:
-   case GL_COMPRESSED_SIGNED_RG_RGTC2:
-  return _mesa_is_desktop_gl(ctx)
- && ctx->Extensions.ARB_texture_compression_rgtc;
-   case GL_COMPRESSED_LUMINANCE_LATC1_EXT:
-   case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT:
-   case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT:
-   case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT:
-  return ctx->API == API_OPENGL_COMPAT
- && ctx->Extensions.EXT_texture_compression_latc;
case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:
   return ctx->API == API_OPENGL_COMPAT
  && ctx->Extensions.ATI_texture_compression_3dc;
-   case GL_ETC1_RGB8_OES:
-  return _mesa_is_gles(ctx)
- && ctx->Extensions.OES_compressed_ETC1_RGB8_texture;
-   case GL_COMPRESSED_RGB8_ETC2:
-   case GL_COMPRESSED_SRGB8_ETC2:
-   case GL_COMPRESSED_RGBA8_ETC2_EAC:
-   case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
-   case GL_COMPRESSED_R11_EAC:
-   case GL_COMPRESSED_RG11_EAC:
-   case GL_COMPRESSED_SIGNED_R11_EAC:
-   case GL_COMPRESSED_SIGNED_RG11_EAC:
-   case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
-   case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
-  return _mesa_is_gles3(ctx) || ctx->Extensions.ARB_ES3_compatibility;
-   case GL_COMPRESSED_RGBA_BPTC_UNORM:
-   case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:
-   case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:
-   case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:
-  return _mesa_is_desktop_gl(ctx) &&
- ctx->Extensions.ARB_texture_compression_bptc;
-   case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
-   case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
-   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
-   case GL_COMPRES

Mesa (master): mesa/formats: add MESA_LAYOUT_LATC

2015-09-19 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 31a5135cd793951191c4a2fb86a50253a9931454
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=31a5135cd793951191c4a2fb86a50253a9931454

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Aug 26 16:25:44 2015 -0700

mesa/formats: add MESA_LAYOUT_LATC

This enables us to predicate statments on a compressed format being
a type of LATC format. Also, remove the comment that lists the enum
(it was getting a tad long).

Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/format_info.py |2 +-
 src/mesa/main/formats.c  |   11 ---
 src/mesa/main/formats.csv|8 
 src/mesa/main/formats.h  |1 +
 src/mesa/main/texcompress.c  |1 +
 5 files changed, 7 insertions(+), 16 deletions(-)

diff --git a/src/mesa/main/format_info.py b/src/mesa/main/format_info.py
index 22eb5a7..50626a85 100644
--- a/src/mesa/main/format_info.py
+++ b/src/mesa/main/format_info.py
@@ -111,7 +111,7 @@ def get_channel_bits(fmat, chan_name):
 return 1 if fmat.has_channel('a') else 0
  else:
 return 0
-  elif fmat.layout == 'rgtc':
+  elif fmat.layout in ('rgtc', 'latc'):
  return 8 if fmat.has_channel(chan_name) else 0
   elif fmat.layout in ('etc1', 'etc2'):
  if fmat.name.endswith('_ALPHA1') and chan_name == 'a':
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 982103f..9f92007 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -188,17 +188,6 @@ _mesa_get_format_max_bits(mesa_format format)
 
 /**
  * Return the layout type of the given format.
- * The return value will be one of:
- *MESA_FORMAT_LAYOUT_ARRAY
- *MESA_FORMAT_LAYOUT_PACKED
- *MESA_FORMAT_LAYOUT_S3TC
- *MESA_FORMAT_LAYOUT_RGTC
- *MESA_FORMAT_LAYOUT_FXT1
- *MESA_FORMAT_LAYOUT_ETC1
- *MESA_FORMAT_LAYOUT_ETC2
- *MESA_FORMAT_LAYOUT_BPTC
- *MESA_FORMAT_LAYOUT_ASTC
- *MESA_FORMAT_LAYOUT_OTHER
  */
 extern enum mesa_format_layout
 _mesa_get_format_layout(mesa_format format)
diff --git a/src/mesa/main/formats.csv b/src/mesa/main/formats.csv
index 11228e0..529de31 100644
--- a/src/mesa/main/formats.csv
+++ b/src/mesa/main/formats.csv
@@ -294,10 +294,10 @@ MESA_FORMAT_RG_RGTC2_UNORM, rgtc  , 4, 4, 
x128, , ,
 MESA_FORMAT_RG_RGTC2_SNORM, rgtc  , 4, 4, x128, , ,
 , xy01, rgb
 
 # LATC1/2 compressed formats
-MESA_FORMAT_L_LATC1_UNORM , rgtc  , 4, 4, x64 , , ,
 , xxx1, rgb
-MESA_FORMAT_L_LATC1_SNORM , rgtc  , 4, 4, x64 , , ,
 , xxx1, rgb
-MESA_FORMAT_LA_LATC2_UNORM, rgtc  , 4, 4, x128, , ,
 , xxxy, rgb
-MESA_FORMAT_LA_LATC2_SNORM, rgtc  , 4, 4, x128, , ,
 , xxxy, rgb
+MESA_FORMAT_L_LATC1_UNORM , latc  , 4, 4, x64 , , ,
 , xxx1, rgb
+MESA_FORMAT_L_LATC1_SNORM , latc  , 4, 4, x64 , , ,
 , xxx1, rgb
+MESA_FORMAT_LA_LATC2_UNORM, latc  , 4, 4, x128, , ,
 , xxxy, rgb
+MESA_FORMAT_LA_LATC2_SNORM, latc  , 4, 4, x128, , ,
 , xxxy, rgb
 
 # ETC1/2 compressed formats
 MESA_FORMAT_ETC1_RGB8 , etc1  , 4, 4, x64 , , ,
 , xyz1, rgb
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index 2b8146c..794d599 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -66,6 +66,7 @@ enum mesa_format_layout {
MESA_FORMAT_LAYOUT_PACKED,
MESA_FORMAT_LAYOUT_S3TC,
MESA_FORMAT_LAYOUT_RGTC,
+   MESA_FORMAT_LAYOUT_LATC,
MESA_FORMAT_LAYOUT_FXT1,
MESA_FORMAT_LAYOUT_ETC1,
MESA_FORMAT_LAYOUT_ETC2,
diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
index 394c8ba..e0294a8 100644
--- a/src/mesa/main/texcompress.c
+++ b/src/mesa/main/texcompress.c
@@ -728,6 +728,7 @@ _mesa_get_compressed_fetch_func(mesa_format format)
case MESA_FORMAT_LAYOUT_FXT1:
   return _mesa_get_fxt_fetch_func(format);
case MESA_FORMAT_LAYOUT_RGTC:
+   case MESA_FORMAT_LAYOUT_LATC:
   return _mesa_get_compressed_rgtc_func(format);
case MESA_FORMAT_LAYOUT_ETC1:
   return _mesa_get_etc_fetch_func(format);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/texcompress: add compressed formats to base format utility function

2015-09-19 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: db2777091d70c7abd28e0a8aac16b4a416e42e81
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=db2777091d70c7abd28e0a8aac16b4a416e42e81

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Aug 27 16:25:48 2015 -0700

mesa/texcompress: add compressed formats to base format utility function

Add S3TC and PALETTE formats.

Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/mesa/main/texcompress.c |   14 ++
 1 file changed, 14 insertions(+)

diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
index e0294a8..84973d3 100644
--- a/src/mesa/main/texcompress.c
+++ b/src/mesa/main/texcompress.c
@@ -100,6 +100,12 @@ _mesa_gl_compressed_format_base_format(GLenum format)
case GL_ETC1_RGB8_OES:
case GL_COMPRESSED_RGB8_ETC2:
case GL_COMPRESSED_SRGB8_ETC2:
+   case GL_RGB_S3TC:
+   case GL_RGB4_S3TC:
+   case GL_PALETTE4_RGB8_OES:
+   case GL_PALETTE4_R5_G6_B5_OES:
+   case GL_PALETTE8_RGB8_OES:
+   case GL_PALETTE8_R5_G6_B5_OES:
   return GL_RGB;
 
case GL_COMPRESSED_RGBA:
@@ -117,6 +123,14 @@ _mesa_gl_compressed_format_base_format(GLenum format)
case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
+   case GL_RGBA_S3TC:
+   case GL_RGBA4_S3TC:
+   case GL_PALETTE4_RGBA8_OES:
+   case GL_PALETTE8_RGB5_A1_OES:
+   case GL_PALETTE4_RGBA4_OES:
+   case GL_PALETTE4_RGB5_A1_OES:
+   case GL_PALETTE8_RGBA8_OES:
+   case GL_PALETTE8_RGBA4_OES:
   return GL_RGBA;
 
case GL_COMPRESSED_ALPHA:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/version: Update gl_extensions:: Version during version override

2015-12-03 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 808e75279618d887daeee8ab2025e39c863234ac
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=808e75279618d887daeee8ab2025e39c863234ac

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue Dec  1 10:42:21 2015 -0800

mesa/version: Update gl_extensions::Version during version override

Commit a16ffb743ced9fde80b2485dfc2d86ae74e86f25, which introduced
gl_extensions::Version, updates the field when the context version
is computed and when entering/exiting meta. Update this field when
the version is overridden as well.

Cc: "11.1" <mesa-sta...@lists.freedesktop.org>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Marta Lofstedt <marta.lofst...@intel.com>

---

 src/mesa/main/version.c |1 +
 1 file changed, 1 insertion(+)

diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index 314b26d..e92bb11 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -199,6 +199,7 @@ _mesa_override_gl_version(struct gl_context *ctx)
* "
*/
   create_version_string(ctx, _mesa_is_gles(ctx) ? "OpenGL ES " : "");
+  ctx->Extensions.Version = ctx->Version;
}
 }
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/extensions: Sort the extension table alphabetically

2015-11-19 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: f030227f4643ae7e832545dfa3c3db472e00ab65
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f030227f4643ae7e832545dfa3c3db472e00ab65

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Nov 18 15:01:43 2015 -0800

mesa/extensions: Sort the extension table alphabetically

Make it easier to determine where to add new extensions.
Performed with the vim sort command.

v2: Insert newline after last #define (Matt)

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Matt Turner <matts...@gmail.com>

---

 src/mesa/main/extensions_table.h |  174 --
 1 file changed, 93 insertions(+), 81 deletions(-)

diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 7b5cc7b..2075168 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -1,8 +1,31 @@
+/* The extension table is alphabetically sorted by the extension name string 
column. */
+
 #define GLL 0
 #define GLC 0
 #define ES1 0
 #define ES2 0
 #define  x ~0
+
+EXT(3DFX_texture_compression_FXT1   , TDFX_texture_compression_FXT1
  , GLL, GLC,  x ,  x , 1999)
+
+EXT(AMD_conservative_depth  , ARB_conservative_depth   
  , GLL, GLC,  x ,  x , 2009)
+EXT(AMD_draw_buffers_blend  , ARB_draw_buffers_blend   
  , GLL, GLC,  x ,  x , 2009)
+EXT(AMD_performance_monitor , AMD_performance_monitor  
  , GLL, GLC,  x ,  x , 2007)
+EXT(AMD_pinned_memory   , AMD_pinned_memory
  , GLL, GLC,  x ,  x , 2013)
+EXT(AMD_seamless_cubemap_per_texture, AMD_seamless_cubemap_per_texture 
  , GLL, GLC,  x ,  x , 2009)
+EXT(AMD_shader_stencil_export   , ARB_shader_stencil_export
  , GLL, GLC,  x ,  x , 2009)
+EXT(AMD_shader_trinary_minmax   , dummy_true   
  , GLL, GLC,  x ,  x , 2012)
+EXT(AMD_vertex_shader_layer , AMD_vertex_shader_layer  
  ,  x , GLC,  x ,  x , 2012)
+EXT(AMD_vertex_shader_viewport_index, AMD_vertex_shader_viewport_index 
  ,  x , GLC,  x ,  x , 2012)
+
+EXT(ANGLE_texture_compression_dxt3  , ANGLE_texture_compression_dxt
  , GLL, GLC, ES1, ES2, 2011)
+EXT(ANGLE_texture_compression_dxt5  , ANGLE_texture_compression_dxt
  , GLL, GLC, ES1, ES2, 2011)
+
+EXT(APPLE_object_purgeable  , APPLE_object_purgeable   
  , GLL, GLC,  x ,  x , 2006)
+EXT(APPLE_packed_pixels , dummy_true   
  , GLL,  x ,  x ,  x , 2002)
+EXT(APPLE_texture_max_level , dummy_true   
  ,  x ,  x , ES1, ES2, 2009)
+EXT(APPLE_vertex_array_object   , dummy_true   
  , GLL,  x ,  x ,  x , 2002)
+
 EXT(ARB_ES2_compatibility   , ARB_ES2_compatibility
  , GLL, GLC,  x ,  x , 2009)
 EXT(ARB_ES3_compatibility   , ARB_ES3_compatibility
  , GLL, GLC,  x ,  x , 2012)
 EXT(ARB_arrays_of_arrays, ARB_arrays_of_arrays 
  , GLL, GLC,  x ,  x , 2012)
@@ -16,9 +39,9 @@ EXT(ARB_color_buffer_float  , 
ARB_color_buffer_float
 EXT(ARB_compressed_texture_pixel_storage, dummy_true   
  , GLL, GLC,  x ,  x , 2011)
 EXT(ARB_compute_shader  , ARB_compute_shader   
  , GLL, GLC,  x ,  x , 2012)
 EXT(ARB_conditional_render_inverted , ARB_conditional_render_inverted  
  , GLL, GLC,  x ,  x , 2014)
+EXT(ARB_conservative_depth  , ARB_conservative_depth   
  , GLL, GLC,  x ,  x , 2011)
 EXT(ARB_copy_buffer , dummy_true   
  , GLL, GLC,  x ,  x , 2008)
 EXT(ARB_copy_image  , ARB_copy_image   
  , GLL, GLC,  x ,  x , 2012)
-EXT(ARB_conservative_depth  , ARB_conservative_depth   
  , GLL, GLC,  x ,  x , 2011)
 EXT(ARB_debug_output, dummy_true   
  , GLL, GLC,  x ,  x , 2009)
 EXT(ARB_depth_buffer_float  , ARB_depth_buffer_float   
  , GLL, GLC,  x ,  x , 2008)
 EXT(ARB_depth_clamp , ARB_depth_clamp  
  , GLL, GLC,  x ,  x , 2003)
@@ -56,8 +79,8 @@ EXT(ARB_multi_bind  , dummy_true
 EXT(ARB_multi_draw_indirect , ARB_draw_indirect
  ,  x , GLC,  x ,  x , 2012)
 EXT(ARB_multisample , dummy_true   
  , GLL,  x ,  x ,  x , 1994)
 EXT(ARB_multitexture, dummy_true   
  , GLL,  x ,  x ,  x , 1998)
-EXT(ARB_occlusion_query2, AR

Mesa (master): mesa: Add test for sorted extension table

2015-11-19 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: e8c5ef3ecaafae0ad6c300019c489401a9af714c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e8c5ef3ecaafae0ad6c300019c489401a9af714c

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Nov 18 15:01:44 2015 -0800

mesa: Add test for sorted extension table

Enable developers to know if the table's alphabetical sorting
is maintained or lost.

v2: Move "*" next to pointer name (Matt)
Include extensions_table.h instead of extensions.h (Ian)
Remove extra " *" in comment (Ian)

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Matt Turner <matts...@gmail.com>

---

 src/mesa/main/tests/Makefile.am |1 +
 src/mesa/main/tests/mesa_extensions.cpp |   51 +++
 2 files changed, 52 insertions(+)

diff --git a/src/mesa/main/tests/Makefile.am b/src/mesa/main/tests/Makefile.am
index bd7ab73..d6977e2 100644
--- a/src/mesa/main/tests/Makefile.am
+++ b/src/mesa/main/tests/Makefile.am
@@ -27,6 +27,7 @@ AM_CPPFLAGS += -DHAVE_SHARED_GLAPI
 main_test_SOURCES +=   \
dispatch_sanity.cpp \
mesa_formats.cpp\
+   mesa_extensions.cpp \
program_state_string.cpp
 
 main_test_LDADD += \
diff --git a/src/mesa/main/tests/mesa_extensions.cpp 
b/src/mesa/main/tests/mesa_extensions.cpp
new file mode 100644
index 000..0c7addd
--- /dev/null
+++ b/src/mesa/main/tests/mesa_extensions.cpp
@@ -0,0 +1,51 @@
+/*
+ * Copyright © 2015 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/**
+ * \name mesa_extensions.cpp
+ *
+ * Verify that the extensions table is sorted.
+ */
+
+#include 
+#include "util/macros.h"
+
+/**
+ * Debug/test: verify the extension table is alphabetically sorted.
+ */
+TEST(MesaExtensionsTest, AlphabeticallySorted)
+{
+   const char *ext_names[] = {
+   #define EXT(name_str, ...) #name_str,
+   #include "main/extensions_table.h"
+   #undef EXT
+   };
+
+   for (unsigned i = 0; i < ARRAY_SIZE(ext_names) - 1; ++i) {
+  const char *current_str = ext_names[i];
+  const char *next_str = ext_names[i+1];
+
+  /* We expect the extension table to be alphabetically sorted */
+  ASSERT_LT(strcmp(current_str, next_str), 0);
+   }
+}

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/extensions: Enable overriding permanently enabled extensions

2015-11-22 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 21d43fe51ab5bcbc89ad5c61a51d3517c4243298
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=21d43fe51ab5bcbc89ad5c61a51d3517c4243298

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Nov 20 16:15:04 2015 -0800

mesa/extensions: Enable overriding permanently enabled extensions

Provide the ability to prevent any permanently enabled extension
from appearing in the string returned by glGetString[i]().

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Brian Paul <bri...@vmware.com>
Tested-by: Brian Paul <bri...@vmware.com>

---

 src/mesa/main/extensions.c |   64 +---
 1 file changed, 24 insertions(+), 40 deletions(-)

diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 01cfdf1..fa50cb6 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -40,7 +40,6 @@
 struct gl_extensions _mesa_extension_override_enables;
 struct gl_extensions _mesa_extension_override_disables;
 static char *extra_extensions = NULL;
-static char *cant_disable_extensions = NULL;
 
 
 /**
@@ -68,29 +67,30 @@ const struct mesa_extension _mesa_extension_table[] = {
 #undef EXT
 };
 
+static bool disabled_extensions[ARRAY_SIZE(_mesa_extension_table)];
 
 /**
  * Given an extension name, lookup up the corresponding member of struct
- * gl_extensions and return that member's offset (in bytes).  If the name is
- * not found in the \c _mesa_extension_table, return 0.
+ * gl_extensions and return that member's index.  If the name is
+ * not found in the \c _mesa_extension_table, return -1.
  *
  * \param name Name of extension.
- * \return Offset of member in struct gl_extensions.
+ * \return Index of member in struct gl_extensions.
  */
-static size_t
-name_to_offset(const char* name)
+static int
+name_to_index(const char* name)
 {
unsigned i;
 
if (name == 0)
-  return 0;
+  return -1;
 
for (i = 0; i < ARRAY_SIZE(_mesa_extension_table); ++i) {
   if (strcmp(name, _mesa_extension_table[i].name) == 0)
-return _mesa_extension_table[i].offset;
+return i;
}
 
-   return 0;
+   return -1;
 }
 
 /**
@@ -206,11 +206,11 @@ _mesa_enable_sw_extensions(struct gl_context *ctx)
  * \return offset of extensions withint `ext' or 0 if extension is not known
  */
 static size_t
-set_extension(struct gl_extensions *ext, const char *name, GLboolean state)
+set_extension(struct gl_extensions *ext, int i, GLboolean state)
 {
size_t offset;
 
-   offset = name_to_offset(name);
+   offset = i < 0 ? 0 : _mesa_extension_table[i].offset;
if (offset != 0 && (offset != o(dummy_true) || state != GL_FALSE)) {
   ((GLboolean *) ext)[offset] = state;
}
@@ -240,12 +240,6 @@ get_extension_override( struct gl_context *ctx )
 {
override_extensions_in_context(ctx);
 
-   if (cant_disable_extensions != NULL) {
-  _mesa_problem(ctx,
-"Trying to disable permanently enabled extensions: %s",
-   cant_disable_extensions);
-   }
-
if (extra_extensions == NULL) {
   return calloc(1, sizeof(char));
} else {
@@ -257,7 +251,7 @@ get_extension_override( struct gl_context *ctx )
 
 
 /**
- * \brief Free extra_extensions and cant_disable_extensions strings
+ * \brief Free extra_extensions string
  *
  * These strings are allocated early during the first context creation by
  * _mesa_one_time_init_extension_overrides.
@@ -266,7 +260,6 @@ static void
 free_unknown_extensions_strings(void)
 {
free(extra_extensions);
-   free(cant_disable_extensions);
 }
 
 
@@ -295,22 +288,20 @@ _mesa_one_time_init_extension_overrides(void)
 
/* extra_exts: List of unrecognized extensions. */
extra_extensions = calloc(ALIGN(strlen(env_const) + 2, 4), sizeof(char));
-   cant_disable_extensions = calloc(ALIGN(strlen(env_const) + 2, 4), 
sizeof(char));
 
/* Copy env_const because strtok() is destructive. */
env = strdup(env_const);
 
if (env == NULL ||
-   extra_extensions == NULL ||
-   cant_disable_extensions == NULL) {
+   extra_extensions == NULL) {
   free(env);
   free(extra_extensions);
-  free(cant_disable_extensions);
   return;
}
 
for (ext = strtok(env, " "); ext != NULL; ext = strtok(NULL, " ")) {
   int enable;
+  int i;
   bool recognized;
   switch (ext[0]) {
   case '+':
@@ -326,7 +317,8 @@ _mesa_one_time_init_extension_overrides(void)
  break;
   }
 
-  offset = set_extension(&_mesa_extension_override_enables, ext, enable);
+  i = name_to_index(ext);
+  offset = set_extension(&_mesa_extension_override_enables, i, enable);
   if (offset != 0 && (offset != o(dummy_true) || enable != GL_FALSE)) {
  ((GLboolean *) &_mesa_extension_override_disables)[offset] = !enable;
  recognized = true;
@@ -334,

Mesa (master): mesa/teximage: Fix S3TC regression due to ASTC interaction

2015-11-22 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: d1212abf505a468c9947a66dbf2d59acb4616e42
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d1212abf505a468c9947a66dbf2d59acb4616e42

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Oct 28 14:50:58 2015 -0700

mesa/teximage: Fix S3TC regression due to ASTC interaction

A prior, literal reading of the ASTC spec led to the prohibition
of some compressed formats being used against the targets:
TEXTURE_CUBE_MAP_ARRAY and TEXTURE_3D. Since the spec does not specify
interactions with other extensions for specific compressed textures,
remove such interactions.

Fixes the following Piglit tests on Gen9:
piglit.spec.arb_direct_state_access.getcompressedtextureimage
piglit.spec.arb_get_texture_sub_image.arb_get_texture_sub_image-getcompressed
piglit.spec.arb_texture_cube_map_array.fbo-generatemipmap-cubemap array 
s3tc_dxt1
piglit.spec.ext_texture_compression_s3tc.getteximage-targets cube_array s3tc

v2. Don't interact with other specific compressed formats (Ian).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91927
Suggested-by: Neil Roberts <n...@linux.intel.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu>

---

 src/mesa/main/teximage.c |   43 +++
 1 file changed, 15 insertions(+), 28 deletions(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index d9453e3..ac7599f 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -1333,21 +1333,6 @@ _mesa_target_can_be_compressed(const struct gl_context 
*ctx, GLenum target,
   break;
case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY:
case GL_TEXTURE_CUBE_MAP_ARRAY:
-  /* From section 3.8.6, page 146 of OpenGL ES 3.0 spec:
-   *
-   *"The ETC2/EAC texture compression algorithm supports only
-   * two-dimensional images. If internalformat is an ETC2/EAC format,
-   * glCompressedTexImage3D will generate an INVALID_OPERATION error if
-   * target is not TEXTURE_2D_ARRAY."
-   *
-   * This should also be applicable for glTexStorage3D(). Other available
-   * targets for these functions are: TEXTURE_3D and 
TEXTURE_CUBE_MAP_ARRAY.
-   */
-  if (layout == MESA_FORMAT_LAYOUT_ETC2 && _mesa_is_gles3(ctx))
-return write_error(error, GL_INVALID_OPERATION);
-
-  target_can_be_compresed = ctx->Extensions.ARB_texture_cube_map_array;
-
   /* From the KHR_texture_compression_astc_hdr spec:
*
* Add a second new column "3D Tex." which is empty for all non-ASTC
@@ -1368,16 +1353,24 @@ _mesa_target_can_be_compressed(const struct gl_context 
*ctx, GLenum target,
*  8.19 is *not* checked'
*
* The instances of  above should say .
+   *
+   * ETC2/EAC formats are the only alternative in GLES and thus such errors
+   * have already been handled by normal ETC2/EAC behavior.
*/
 
-  /* Throw an INVALID_OPERATION error if the target is
-   * TEXTURE_CUBE_MAP_ARRAY and the format is not ASTC.
+  /* From section 3.8.6, page 146 of OpenGL ES 3.0 spec:
+   *
+   *"The ETC2/EAC texture compression algorithm supports only
+   * two-dimensional images. If internalformat is an ETC2/EAC format,
+   * glCompressedTexImage3D will generate an INVALID_OPERATION error if
+   * target is not TEXTURE_2D_ARRAY."
+   *
+   * This should also be applicable for glTexStorage3D(). Other available
+   * targets for these functions are: TEXTURE_3D and 
TEXTURE_CUBE_MAP_ARRAY.
*/
-  if (target_can_be_compresed &&
-  ctx->Extensions.KHR_texture_compression_astc_ldr &&
-  layout != MESA_FORMAT_LAYOUT_ASTC)
- return write_error(error, GL_INVALID_OPERATION);
-
+  if (layout == MESA_FORMAT_LAYOUT_ETC2 && _mesa_is_gles3(ctx))
+return write_error(error, GL_INVALID_OPERATION);
+  target_can_be_compresed = ctx->Extensions.ARB_texture_cube_map_array;
   break;
case GL_TEXTURE_3D:
   switch (layout) {
@@ -1401,12 +1394,6 @@ _mesa_target_can_be_compressed(const struct gl_context 
*ctx, GLenum target,
 return write_error(error, GL_INVALID_OPERATION);
  break;
   default:
- /* Throw an INVALID_OPERATION error if the target is TEXTURE_3D and
-  * the format is not ASTC.
-  * See comment in switch case GL_TEXTURE_CUBE_MAP_ARRAY for more info.
-  */
- if (ctx->Extensions.KHR_texture_compression_astc_ldr)
-return write_error(error, GL_INVALID_OPERATION);
  break;
   }
default:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): anv/pipeline: Don't dereference NULL dynamic state pointers

2016-06-13 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: a4a59172482d50318a5ae7f99021bcf0125e0f53
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a4a59172482d50318a5ae7f99021bcf0125e0f53

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Jun  9 14:48:00 2016 -0700

anv/pipeline: Don't dereference NULL dynamic state pointers

Add guards to prevent dereferencing NULL dynamic pipeline state. Asserts
of pCreateInfo members are moved to the earliest points at which they
should not be NULL.

This fixes a segfault seen in the McNopper demo, VKTS_Example09.

v3 (Jason Ekstrand):
   - Fix disabled rasterization check
   - Revert opaque detection of color attachment usage

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net>
Cc: "12.0" <mesa-sta...@lists.freedesktop.org>

---

 src/intel/vulkan/anv_pipeline.c | 70 -
 1 file changed, 48 insertions(+), 22 deletions(-)

diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index ae03787..60b7c6b 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -979,18 +979,27 @@ copy_non_dynamic_state(struct anv_pipeline *pipeline,
 
struct anv_dynamic_state *dynamic = >dynamic_state;
 
-   dynamic->viewport.count = pCreateInfo->pViewportState->viewportCount;
-   if (states & (1 << VK_DYNAMIC_STATE_VIEWPORT)) {
-  typed_memcpy(dynamic->viewport.viewports,
-   pCreateInfo->pViewportState->pViewports,
-   pCreateInfo->pViewportState->viewportCount);
-   }
+   /* Section 9.2 of the Vulkan 1.0.15 spec says:
+*
+*pViewportState is [...] NULL if the pipeline
+*has rasterization disabled.
+*/
+   if (!pCreateInfo->pRasterizationState->rasterizerDiscardEnable) {
+  assert(pCreateInfo->pViewportState);
+
+  dynamic->viewport.count = pCreateInfo->pViewportState->viewportCount;
+  if (states & (1 << VK_DYNAMIC_STATE_VIEWPORT)) {
+ typed_memcpy(dynamic->viewport.viewports,
+ pCreateInfo->pViewportState->pViewports,
+ pCreateInfo->pViewportState->viewportCount);
+  }
 
-   dynamic->scissor.count = pCreateInfo->pViewportState->scissorCount;
-   if (states & (1 << VK_DYNAMIC_STATE_SCISSOR)) {
-  typed_memcpy(dynamic->scissor.scissors,
-   pCreateInfo->pViewportState->pScissors,
-   pCreateInfo->pViewportState->scissorCount);
+  dynamic->scissor.count = pCreateInfo->pViewportState->scissorCount;
+  if (states & (1 << VK_DYNAMIC_STATE_SCISSOR)) {
+ typed_memcpy(dynamic->scissor.scissors,
+ pCreateInfo->pViewportState->pScissors,
+ pCreateInfo->pViewportState->scissorCount);
+  }
}
 
if (states & (1 << VK_DYNAMIC_STATE_LINE_WIDTH)) {
@@ -1008,10 +1017,27 @@ copy_non_dynamic_state(struct anv_pipeline *pipeline,
  pCreateInfo->pRasterizationState->depthBiasSlopeFactor;
}
 
-   if (states & (1 << VK_DYNAMIC_STATE_BLEND_CONSTANTS)) {
+   /* Section 9.2 of the Vulkan 1.0.15 spec says:
+*
+*pColorBlendState is [...] NULL if the pipeline has rasterization
+*disabled or if the subpass of the render pass the pipeline is
+*created against does not use any color attachments.
+*/
+   bool uses_color_att = false;
+   for (unsigned i = 0; i < subpass->color_count; ++i) {
+  if (subpass->color_attachments[i] != VK_ATTACHMENT_UNUSED) {
+ uses_color_att = true;
+ break;
+  }
+   }
+
+   if (uses_color_att &&
+   !pCreateInfo->pRasterizationState->rasterizerDiscardEnable) {
   assert(pCreateInfo->pColorBlendState);
-  typed_memcpy(dynamic->blend_constants,
-   pCreateInfo->pColorBlendState->blendConstants, 4);
+
+  if (states & (1 << VK_DYNAMIC_STATE_BLEND_CONSTANTS))
+ typed_memcpy(dynamic->blend_constants,
+ pCreateInfo->pColorBlendState->blendConstants, 4);
}
 
/* If there is no depthstencil attachment, then don't read
@@ -1020,14 +1046,17 @@ copy_non_dynamic_state(struct anv_pipeline *pipeline,
 * no need to override the depthstencil defaults in
 * anv_pipeline::dynamic_state when there is no depthstencil attachment.
 *
-* From the Vulkan spec (20 Oct 2015, git-aa308cb):
+* Section 9.2 of the Vulkan 1.0.15 spec says:
 *
-*pDepthStencilState [...] may only be NULL if renderPass and subpass
-*specify a subpass that has no depth/stencil attachment.
+*pDepthStencilState is [...] NULL if the pipeline has rasterization
+*disabled or if the subpass of the render pass the pipel

Mesa (master): anv: Document and rename anv_pipeline_init_dynamic_state()

2016-06-13 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: a0d84a9ef9df69606a928cf7dca8f2b80dea1c36
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a0d84a9ef9df69606a928cf7dca8f2b80dea1c36

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Jun  9 12:12:29 2016 -0700

anv: Document and rename anv_pipeline_init_dynamic_state()

To reduce confusion, clarify that the state being copied is not dynamic.

This agrees with the Vulkan spec's usage of the term. Various sections
specify that the various pipeline state which have VkDynamicState enums
(e.g. viewport, scissor, etc.) may or may not be dynamic.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net>
Cc: "12.0" <mesa-sta...@lists.freedesktop.org>

---

 src/intel/vulkan/anv_pipeline.c | 19 ---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index 959fbbd..ae03787 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -947,9 +947,22 @@ anv_compute_urb_partition(struct anv_pipeline *pipeline)
pipeline->urb.entries[MESA_SHADER_TESS_EVAL] = 0;
 }
 
+/**
+ * Copy pipeline state not marked as dynamic.
+ * Dynamic state is pipeline state which hasn't been provided at pipeline
+ * creation time, but is dynamically provided afterwards using various
+ * vkCmdSet* functions.
+ *
+ * The set of state considered "non_dynamic" is determined by the pieces of
+ * state that have their corresponding VkDynamicState enums omitted from
+ * VkPipelineDynamicStateCreateInfo::pDynamicStates.
+ *
+ * @param[out] pipelineDestination non_dynamic state.
+ * @param[in]  pCreateInfo Source of non_dynamic state to be copied.
+ */
 static void
-anv_pipeline_init_dynamic_state(struct anv_pipeline *pipeline,
-const VkGraphicsPipelineCreateInfo 
*pCreateInfo)
+copy_non_dynamic_state(struct anv_pipeline *pipeline,
+   const VkGraphicsPipelineCreateInfo *pCreateInfo)
 {
anv_cmd_dirty_mask_t states = ANV_CMD_DIRTY_DYNAMIC_ALL;
ANV_FROM_HANDLE(anv_render_pass, pass, pCreateInfo->renderPass);
@@ -1122,7 +1135,7 @@ anv_pipeline_init(struct anv_pipeline *pipeline,
pipeline->batch.end = pipeline->batch.start + sizeof(pipeline->batch_data);
pipeline->batch.relocs = >batch_relocs;
 
-   anv_pipeline_init_dynamic_state(pipeline, pCreateInfo);
+   copy_non_dynamic_state(pipeline, pCreateInfo);
 
pipeline->use_repclear = extra && extra->use_repclear;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): docs/devinfo: Add closing paragraph tag

2016-06-07 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 26b0f023d749e92800804f650fe065d5a32d4edd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=26b0f023d749e92800804f650fe065d5a32d4edd

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Jun  3 10:56:46 2016 -0700

docs/devinfo: Add closing paragraph tag

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>

---

 docs/devinfo.html | 1 +
 1 file changed, 1 insertion(+)

diff --git a/docs/devinfo.html b/docs/devinfo.html
index 8ebf80f..70141ae 100644
--- a/docs/devinfo.html
+++ b/docs/devinfo.html
@@ -703,6 +703,7 @@ To add a new GL extension to Mesa you have to do at least 
the following.
tests are run using 'make check'
 
 
+
 
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): docs/devinfo: Update bullet in stale extension guide

2016-06-07 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 9e7de50cab78d1144f49688506353c78e1349ae3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e7de50cab78d1144f49688506353c78e1349ae3

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Jun  3 10:58:05 2016 -0700

docs/devinfo: Update bullet in stale extension guide

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>

---

 docs/devinfo.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/devinfo.html b/docs/devinfo.html
index 70141ae..f5d23ab 100644
--- a/docs/devinfo.html
+++ b/docs/devinfo.html
@@ -686,7 +686,7 @@ To add a new GL extension to Mesa you have to do at least 
the following.
Add a new entry to the gl_extensions struct in mtypes.h
 
 
-   Update the extensions.c file.
+   Add a new entry to the src/mesa/main/extensions_table.h file.
 
 
From this point, the best way to proceed is to find another extension,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): docs/devinfo: Expound on helpful extension tips

2016-06-07 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: b7a0c0ec7f5626bbec4904e6754f27087120ec54
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b7a0c0ec7f5626bbec4904e6754f27087120ec54

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Jun  3 10:59:18 2016 -0700

docs/devinfo: Expound on helpful extension tips

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>

---

 docs/devinfo.html | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/docs/devinfo.html b/docs/devinfo.html
index f5d23ab..489d263 100644
--- a/docs/devinfo.html
+++ b/docs/devinfo.html
@@ -684,6 +684,8 @@ To add a new GL extension to Mesa you have to do at least 
the following.
 
 
Add a new entry to the gl_extensions struct in mtypes.h
+   if the extension requires driver capabilities not already exposed by
+   another extension.
 
 
Add a new entry to the src/mesa/main/extensions_table.h file.
@@ -698,6 +700,11 @@ To add a new GL extension to Mesa you have to do at least 
the following.
and attrib.c will most likely require new code.
 
 
+   To determine if the new extension is active in the current context,
+   use the auto-generated _mesa_has_##name_str() function defined in
+   src/mesa/main/extensions.h.
+
+
The dispatch tests check_table.cpp and dispatch_sanity.cpp
should be updated with details about the new extensions functions. These
tests are run using 'make check'

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/extensions: Fix ES1 extension reporting

2016-06-02 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: c06cef7f9b27dcc109c9c6ae69f729acce041072
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c06cef7f9b27dcc109c9c6ae69f729acce041072

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue May 24 14:27:26 2016 -0700

mesa/extensions: Fix ES1 extension reporting

Commit eda15abd84af575d3bde432e2163e30d743a7c87 , unintentionally
advertised these extensions in ES1 contexts. Undo this error.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Cc: "12.0" <mesa-sta...@lists.freedesktop.org>

---

 src/mesa/main/extensions_table.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index b715f7c..7dd025a 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -190,7 +190,7 @@ EXT(EXT_blend_minmax, 
EXT_blend_minmax
 EXT(EXT_blend_subtract  , dummy_true   
  , GLL,  x ,  x ,  x , 1995)
 EXT(EXT_buffer_storage  , ARB_buffer_storage   
  ,  x ,  x ,  x ,  31, 2015)
 EXT(EXT_clip_cull_distance  , ARB_cull_distance
  ,  x ,  x ,  x ,  30, 2016)
-EXT(EXT_color_buffer_float  , dummy_true   
  ,  x ,  x , ES1,  30, 2013)
+EXT(EXT_color_buffer_float  , dummy_true   
  ,  x ,  x ,  x ,  30, 2013)
 EXT(EXT_compiled_vertex_array   , dummy_true   
  , GLL,  x ,  x ,  x , 1996)
 EXT(EXT_copy_image  , OES_copy_image   
  ,  x ,  x ,  x ,  30, 2014)
 EXT(EXT_copy_texture, dummy_true   
  , GLL,  x ,  x ,  x , 1995)
@@ -368,7 +368,7 @@ EXT(OES_texture_half_float_linear   , 
OES_texture_half_float_linear
 EXT(OES_texture_mirrored_repeat , dummy_true   
  ,  x ,  x , ES1,  x , 2005)
 EXT(OES_texture_npot, ARB_texture_non_power_of_two 
  ,  x ,  x , ES1, ES2, 2005)
 EXT(OES_texture_stencil8, ARB_texture_stencil8 
  ,  x ,  x ,  x ,  30, 2014)
-EXT(OES_texture_storage_multisample_2d_array, ARB_texture_multisample  
  ,  x ,  x , ES1,  31, 2014)
+EXT(OES_texture_storage_multisample_2d_array, ARB_texture_multisample  
  ,  x ,  x ,  x ,  31, 2014)
 EXT(OES_vertex_array_object , dummy_true   
  ,  x ,  x , ES1, ES2, 2010)
 
 EXT(S3_s3tc , ANGLE_texture_compression_dxt
  , GLL, GLC,  x ,  x , 1999)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/readpix: Dedent former _mesa_readpixels() if block

2016-02-09 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: c624241ef47c3a6ea2d1177969328bd4547e45a2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c624241ef47c3a6ea2d1177969328bd4547e45a2

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Feb  5 16:25:28 2016 -0800

mesa/readpix: Dedent former _mesa_readpixels() if block

Formatting patch split out for easy reviewing.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Reviewed-by: Brian Paul <bri...@vmware.com>

---

 src/mesa/main/readpix.c | 58 -
 1 file changed, 29 insertions(+), 29 deletions(-)

diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index 56e9d60..470182a 100644
--- a/src/mesa/main/readpix.c
+++ b/src/mesa/main/readpix.c
@@ -861,38 +861,38 @@ _mesa_readpixels(struct gl_context *ctx,
if (ctx->NewState)
   _mesa_update_state(ctx);
 
-  pixels = _mesa_map_pbo_dest(ctx, packing, pixels);
-
-  if (pixels) {
- /* Try memcpy first. */
- if (readpixels_memcpy(ctx, x, y, width, height, format, type,
-   pixels, packing)) {
-_mesa_unmap_pbo_dest(ctx, packing);
-return;
- }
-
- /* Otherwise take the slow path. */
- switch (format) {
- case GL_STENCIL_INDEX:
-read_stencil_pixels(ctx, x, y, width, height, type, pixels,
-packing);
-break;
- case GL_DEPTH_COMPONENT:
-read_depth_pixels(ctx, x, y, width, height, type, pixels,
-  packing);
-break;
- case GL_DEPTH_STENCIL_EXT:
-read_depth_stencil_pixels(ctx, x, y, width, height, type, pixels,
-  packing);
-break;
- default:
-/* all other formats should be color formats */
-read_rgba_pixels(ctx, x, y, width, height, format, type, pixels,
- packing);
- }
+   pixels = _mesa_map_pbo_dest(ctx, packing, pixels);
 
+   if (pixels) {
+  /* Try memcpy first. */
+  if (readpixels_memcpy(ctx, x, y, width, height, format, type,
+pixels, packing)) {
  _mesa_unmap_pbo_dest(ctx, packing);
+ return;
+  }
+
+  /* Otherwise take the slow path. */
+  switch (format) {
+  case GL_STENCIL_INDEX:
+ read_stencil_pixels(ctx, x, y, width, height, type, pixels,
+ packing);
+ break;
+  case GL_DEPTH_COMPONENT:
+ read_depth_pixels(ctx, x, y, width, height, type, pixels,
+   packing);
+ break;
+  case GL_DEPTH_STENCIL_EXT:
+ read_depth_stencil_pixels(ctx, x, y, width, height, type, pixels,
+   packing);
+ break;
+  default:
+ /* all other formats should be color formats */
+ read_rgba_pixels(ctx, x, y, width, height, format, type, pixels,
+  packing);
   }
+
+  _mesa_unmap_pbo_dest(ctx, packing);
+   }
 }
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/readpix: Clip ReadPixels() area to the ReadBuffer's

2016-02-09 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 605832736a6d9427ad894d403cceeb74a5b18dc1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=605832736a6d9427ad894d403cceeb74a5b18dc1

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Feb  5 16:21:33 2016 -0800

mesa/readpix: Clip ReadPixels() area to the ReadBuffer's

The fast path for Intel's ReadPixels() unintentionally omits clipping
the specified area to a valid one. Rather than clip in various
corner-cases, perform this operation in the API validation stage.

The bug in intel_readpixels_tiled_memcpy() showed itself when the winsys
ReadBuffer's height was smaller than the one specified by ReadPixels().
yoffset became negative, which was an invalid input for tiled_to_linear().

v2: Move clipping to validation stage (Jason)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92193
Reported-by: Marta Löfstedt <marta.lofst...@intel.com>
Cc: "11.0 11.1" <mesa-sta...@lists.freedesktop.org>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Reviewed-by: Brian Paul <bri...@vmware.com>

---

 src/mesa/main/readpix.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index 8cdc9fe..a5b74bc 100644
--- a/src/mesa/main/readpix.c
+++ b/src/mesa/main/readpix.c
@@ -993,6 +993,7 @@ _mesa_ReadnPixelsARB( GLint x, GLint y, GLsizei width, 
GLsizei height,
 {
GLenum err = GL_NO_ERROR;
struct gl_renderbuffer *rb;
+   struct gl_pixelstore_attrib clippedPacking;
 
GET_CURRENT_CONTEXT(ctx);
 
@@ -1094,7 +1095,9 @@ _mesa_ReadnPixelsARB( GLint x, GLint y, GLsizei width, 
GLsizei height,
   }
}
 
-   if (width == 0 || height == 0)
+   /* Do all needed clipping here, so that we can forget about it later */
+   clippedPacking = ctx->Pack;
+   if (!_mesa_clip_readpixels(ctx, , , , , ))
   return; /* nothing to do */
 
if (!_mesa_validate_pbo_access(2, >Pack, width, height, 1,
@@ -1118,7 +1121,7 @@ _mesa_ReadnPixelsARB( GLint x, GLint y, GLsizei width, 
GLsizei height,
}
 
ctx->Driver.ReadPixels(ctx, x, y, width, height,
- format, type, >Pack, pixels);
+  format, type, , pixels);
 }
 
 void GLAPIENTRY

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/image: Make _mesa_clip_readpixels() work with renderbuffers

2016-02-09 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 55d56d34e0535baa2c7e1e1d8f1be11593a07fa8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=55d56d34e0535baa2c7e1e1d8f1be11593a07fa8

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Feb  5 16:20:01 2016 -0800

mesa/image: Make _mesa_clip_readpixels() work with renderbuffers

v2: Use gl_renderbuffer::{Width,Height} (Jason)

Cc: "11.0 11.1" <mesa-sta...@lists.freedesktop.org>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Reviewed-by: Brian Paul <bri...@vmware.com>

---

 src/mesa/main/image.c | 22 +-
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c
index e79e3e6..99f253c 100644
--- a/src/mesa/main/image.c
+++ b/src/mesa/main/image.c
@@ -670,7 +670,7 @@ _mesa_clip_drawpixels(const struct gl_context *ctx,
  * so that the image region is entirely within the window bounds.
  * Note: this is different from _mesa_clip_drawpixels() in that the
  * scissor box is ignored, and we use the bounds of the current readbuffer
- * surface.
+ * surface or the attached image.
  *
  * \return  GL_TRUE if region to read is in bounds
  *  GL_FALSE if region is completely out of bounds (nothing to read)
@@ -682,6 +682,18 @@ _mesa_clip_readpixels(const struct gl_context *ctx,
   struct gl_pixelstore_attrib *pack)
 {
const struct gl_framebuffer *buffer = ctx->ReadBuffer;
+   struct gl_renderbuffer *rb = buffer->_ColorReadBuffer;
+   GLsizei clip_width;
+   GLsizei clip_height;
+
+   if (rb) {
+  clip_width = rb->Width;
+  clip_height = rb->Height;
+   } else {
+  clip_width = buffer->Width;
+  clip_height = buffer->Height;
+   }
+
 
if (pack->RowLength == 0) {
   pack->RowLength = *width;
@@ -694,8 +706,8 @@ _mesa_clip_readpixels(const struct gl_context *ctx,
   *srcX = 0;
}
/* right clipping */
-   if (*srcX + *width > (GLsizei) buffer->Width)
-  *width -= (*srcX + *width - buffer->Width);
+   if (*srcX + *width > clip_width)
+  *width -= (*srcX + *width - clip_width);
 
if (*width <= 0)
   return GL_FALSE;
@@ -707,8 +719,8 @@ _mesa_clip_readpixels(const struct gl_context *ctx,
   *srcY = 0;
}
/* top clipping */
-   if (*srcY + *height > (GLsizei) buffer->Height)
-  *height -= (*srcY + *height - buffer->Height);
+   if (*srcY + *height > clip_height)
+  *height -= (*srcY + *height - clip_height);
 
if (*height <= 0)
   return GL_FALSE;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa/readpix: Don't clip in _mesa_readpixels()

2016-02-09 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: b89a8a15c240418d1859947b5114993ecdf424fb
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b89a8a15c240418d1859947b5114993ecdf424fb

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Feb  5 16:25:01 2016 -0800

mesa/readpix: Don't clip in _mesa_readpixels()

The clipping is performed higher up in the call-chain.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
Reviewed-by: Brian Paul <bri...@vmware.com>

---

 src/mesa/main/readpix.c | 20 +++-
 1 file changed, 7 insertions(+), 13 deletions(-)

diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index a5b74bc..56e9d60 100644
--- a/src/mesa/main/readpix.c
+++ b/src/mesa/main/readpix.c
@@ -858,21 +858,16 @@ _mesa_readpixels(struct gl_context *ctx,
  const struct gl_pixelstore_attrib *packing,
  GLvoid *pixels)
 {
-   struct gl_pixelstore_attrib clippedPacking = *packing;
-
if (ctx->NewState)
   _mesa_update_state(ctx);
 
-   /* Do all needed clipping here, so that we can forget about it later */
-   if (_mesa_clip_readpixels(ctx, , , , , )) {
-
-  pixels = _mesa_map_pbo_dest(ctx, , pixels);
+  pixels = _mesa_map_pbo_dest(ctx, packing, pixels);
 
   if (pixels) {
  /* Try memcpy first. */
  if (readpixels_memcpy(ctx, x, y, width, height, format, type,
pixels, packing)) {
-_mesa_unmap_pbo_dest(ctx, );
+_mesa_unmap_pbo_dest(ctx, packing);
 return;
  }
 
@@ -880,25 +875,24 @@ _mesa_readpixels(struct gl_context *ctx,
  switch (format) {
  case GL_STENCIL_INDEX:
 read_stencil_pixels(ctx, x, y, width, height, type, pixels,
-);
+packing);
 break;
  case GL_DEPTH_COMPONENT:
 read_depth_pixels(ctx, x, y, width, height, type, pixels,
-  );
+  packing);
 break;
  case GL_DEPTH_STENCIL_EXT:
 read_depth_stencil_pixels(ctx, x, y, width, height, type, pixels,
-  );
+  packing);
 break;
  default:
 /* all other formats should be color formats */
 read_rgba_pixels(ctx, x, y, width, height, format, type, pixels,
- );
+ packing);
  }
 
- _mesa_unmap_pbo_dest(ctx, );
+ _mesa_unmap_pbo_dest(ctx, packing);
   }
-   }
 }
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): isl/surface_state: Fix array spacing on Gen7

2016-02-29 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 74b7b59db5d3ce986f92599b14feaaade63f7b12
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=74b7b59db5d3ce986f92599b14feaaade63f7b12

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Feb 29 11:24:34 2016 -0800

isl/surface_state: Fix array spacing on Gen7

v2: Don't cast the enum to a boolean (Jason)

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/isl/isl_surface_state.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/src/intel/isl/isl_surface_state.c 
b/src/intel/isl/isl_surface_state.c
index 12f4fb6..0f45100 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -227,6 +227,11 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, 
void *state,
   .VerticalLineStride = 0,
   .VerticalLineStrideOffset = 0,
 
+#if (GEN_GEN == 7)
+  .SurfaceArraySpacing = info->surf->array_pitch_span ==
+ ISL_ARRAY_PITCH_SPAN_COMPACT,
+#endif
+
 #if GEN_GEN >= 8
   .SamplerL2BypassModeDisable = true,
 #endif

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): isl: Fix isl_surf_get_image_intratile_offset_el()

2016-02-26 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 265d4c415ca6b41bdd9a4a3e9f311d8f6e69cef1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=265d4c415ca6b41bdd9a4a3e9f311d8f6e69cef1

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Feb 24 12:10:44 2016 -0800

isl: Fix isl_surf_get_image_intratile_offset_el()

Consecutive tiles are separated by the size of the tile, not by the
logical tile width.

v2: Remove extra subtraction (Ville)
Add parenthesis (Jason)
v3: Update the unit tests for the function

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/isl/isl.c|  2 +-
 .../isl/tests/isl_surf_get_image_offset_test.c | 70 +++---
 2 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
index c1d47d5..3b6bee1 100644
--- a/src/intel/isl/isl.c
+++ b/src/intel/isl/isl.c
@@ -1378,7 +1378,7 @@ isl_surf_get_image_intratile_offset_el(const struct 
isl_device *dev,
uint32_t total_x_offset_B = total_x_offset_el * fmtl->bs;
uint32_t small_x_offset_B = total_x_offset_B % tile_info.width;
uint32_t small_x_offset_el = small_x_offset_B / fmtl->bs;
-   uint32_t big_x_offset_B = total_x_offset_B - small_x_offset_B;
+   uint32_t big_x_offset_B = (total_x_offset_B / tile_info.width) * 
tile_info.size;
 
*base_address_offset = big_y_offset_B + big_x_offset_B;
*x_offset_el = small_x_offset_el;
diff --git a/src/intel/isl/tests/isl_surf_get_image_offset_test.c 
b/src/intel/isl/tests/isl_surf_get_image_offset_test.c
index cda8583..34b336e 100644
--- a/src/intel/isl/tests/isl_surf_get_image_offset_test.c
+++ b/src/intel/isl/tests/isl_surf_get_image_offset_test.c
@@ -191,14 +191,14 @@ 
test_bdw_2d_r8g8b8a8_unorm_512x512_array01_samples01_noaux_tiley0(void)
 
t_assert_intratile_offset_el(, , 0, 0, 0,  0x0, 0,  0);
t_assert_intratile_offset_el(, , 1, 0, 0, 0x10, 0,  0);
-   t_assert_intratile_offset_el(, , 2, 0, 0, 0x100400, 0,  0);
-   t_assert_intratile_offset_el(, , 3, 0, 0, 0x140400, 0,  0);
-   t_assert_intratile_offset_el(, , 4, 0, 0, 0x160400, 0,  0);
-   t_assert_intratile_offset_el(, , 5, 0, 0, 0x170400, 0,  0);
-   t_assert_intratile_offset_el(, , 6, 0, 0, 0x170400, 0, 16);
-   t_assert_intratile_offset_el(, , 7, 0, 0, 0x170400, 0, 24);
-   t_assert_intratile_offset_el(, , 8, 0, 0, 0x170400, 0, 28);
-   t_assert_intratile_offset_el(, , 9, 0, 0, 0x180400, 0,  0);
+   t_assert_intratile_offset_el(, , 2, 0, 0, 0x108000, 0,  0);
+   t_assert_intratile_offset_el(, , 3, 0, 0, 0x148000, 0,  0);
+   t_assert_intratile_offset_el(, , 4, 0, 0, 0x168000, 0,  0);
+   t_assert_intratile_offset_el(, , 5, 0, 0, 0x178000, 0,  0);
+   t_assert_intratile_offset_el(, , 6, 0, 0, 0x178000, 0, 16);
+   t_assert_intratile_offset_el(, , 7, 0, 0, 0x178000, 0, 24);
+   t_assert_intratile_offset_el(, , 8, 0, 0, 0x178000, 0, 28);
+   t_assert_intratile_offset_el(, , 9, 0, 0, 0x188000, 0,  0);
 }
 
 static void
@@ -260,41 +260,41 @@ 
test_bdw_2d_r8g8b8a8_unorm_1024x1024_array06_samples01_noaux_tiley0(void)
/* array layer 0 */
t_assert_intratile_offset_el(, ,  0, 0, 0, 0x0, 0,  0);
t_assert_intratile_offset_el(, ,  1, 0, 0,0x40, 0,  0);
-   t_assert_intratile_offset_el(, ,  2, 0, 0,0x400800, 0,  0);
-   t_assert_intratile_offset_el(, ,  3, 0, 0,0x500800, 0,  0);
-   t_assert_intratile_offset_el(, ,  4, 0, 0,0x580800, 0,  0);
-   t_assert_intratile_offset_el(, ,  5, 0, 0,0x5c0800, 0,  0);
-   t_assert_intratile_offset_el(, ,  6, 0, 0,0x5e0800, 0,  0);
-   t_assert_intratile_offset_el(, ,  7, 0, 0,0x5e0800, 0, 16);
-   t_assert_intratile_offset_el(, ,  8, 0, 0,0x5e0800, 0, 24);
-   t_assert_intratile_offset_el(, ,  9, 0, 0,0x5e0800, 0, 28);
-   t_assert_intratile_offset_el(, , 10, 0, 0,0x600800, 0,  0);
+   t_assert_intratile_offset_el(, ,  2, 0, 0,0x41, 0,  0);
+   t_assert_intratile_offset_el(, ,  3, 0, 0,0x51, 0,  0);
+   t_assert_intratile_offset_el(, ,  4, 0, 0,0x59, 0,  0);
+   t_assert_intratile_offset_el(, ,  5, 0, 0,0x5d, 0,  0);
+   t_assert_intratile_offset_el(, ,  6, 0, 0,0x5f, 0,  0);
+   t_assert_intratile_offset_el(, ,  7, 0, 0,0x5f, 0, 16);
+   t_assert_intratile_offset_el(, ,  8, 0, 0,0x5f, 0, 24);
+   t_assert_intratile_offset_el(, ,  9, 0, 0,0x5f, 0, 28);
+   t_assert_intratile_offset_el(, , 10, 0, 0,0x61, 0,  0);
 
/* array layer 1 */
t_assert_intratile_offset_el(, ,  0, 1, 0,0x60, 0,  4);
t_assert_intratile_offset_el(, ,  1, 1, 0,0xa0, 0,  4);
-   t_assert_intratile_offset_el(, ,  2, 1, 0,0xa00800, 0,  4);
-   t_assert_intratile_offset_el(, ,  3, 1, 0,0xb00800, 0,  4);
-   t_assert_intratile_offset_el(, ,  4, 1, 0,0xb80800, 0,  4);
-   t_assert_intratile_offset_el(, ,  5, 1, 0,0xbc0800, 0,  4);
-   t_assert_intratil

Mesa (master): i965: Enable tiled mem_copy with sRGB-formatted resources

2016-02-24 Thread Nanley Chery
Module: Mesa
Branch: master
Commit: 3eb476fa143f0c14d3e811ee6301ce7beb4e44f1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3eb476fa143f0c14d3e811ee6301ce7beb4e44f1

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Feb 10 16:53:57 2016 -0800

i965: Enable tiled mem_copy with sRGB-formatted resources

RGBA8 and BGRA8 unorm formats are compatible with the various
mem_copy functions. Their sRGB counterparts are also compatible
because they're also color-renderable (of importance when the
specified resource is a readbuffer) and they share the same
physical layout.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>

---

 src/mesa/drivers/dri/i965/intel_tiled_memcpy.c | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c 
b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
index 2383401..3135458 100644
--- a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
+++ b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
@@ -757,7 +757,9 @@ bool intel_get_memcpy(mesa_format tiledFormat, GLenum 
format,
   *cpp = 1;
   *mem_copy = memcpy;
} else if ((tiledFormat == MESA_FORMAT_B8G8R8A8_UNORM) ||
-  (tiledFormat == MESA_FORMAT_B8G8R8X8_UNORM)) {
+  (tiledFormat == MESA_FORMAT_B8G8R8X8_UNORM) ||
+  (tiledFormat == MESA_FORMAT_B8G8R8A8_SRGB) ||
+  (tiledFormat == MESA_FORMAT_B8G8R8X8_SRGB)) {
   *cpp = 4;
   if (format == GL_BGRA) {
  *mem_copy = memcpy;
@@ -766,7 +768,9 @@ bool intel_get_memcpy(mesa_format tiledFormat, GLenum 
format,
: rgba8_copy_aligned_src;
   }
} else if ((tiledFormat == MESA_FORMAT_R8G8B8A8_UNORM) ||
-  (tiledFormat == MESA_FORMAT_R8G8B8X8_UNORM)) {
+  (tiledFormat == MESA_FORMAT_R8G8B8X8_UNORM) ||
+  (tiledFormat == MESA_FORMAT_R8G8B8A8_SRGB) ||
+  (tiledFormat == MESA_FORMAT_R8G8B8X8_SRGB)) {
   *cpp = 4;
   if (format == GL_BGRA) {
  /* Copying from RGBA to BGRA is the same as BGRA to RGBA so we can

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (pushit): i965: Enable tiled mem_copy with sRGB-formatted resources

2016-02-24 Thread Nanley Chery
Module: Mesa
Branch: pushit
Commit: 3eb476fa143f0c14d3e811ee6301ce7beb4e44f1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3eb476fa143f0c14d3e811ee6301ce7beb4e44f1

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Feb 10 16:53:57 2016 -0800

i965: Enable tiled mem_copy with sRGB-formatted resources

RGBA8 and BGRA8 unorm formats are compatible with the various
mem_copy functions. Their sRGB counterparts are also compatible
because they're also color-renderable (of importance when the
specified resource is a readbuffer) and they share the same
physical layout.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>

---

 src/mesa/drivers/dri/i965/intel_tiled_memcpy.c | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c 
b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
index 2383401..3135458 100644
--- a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
+++ b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
@@ -757,7 +757,9 @@ bool intel_get_memcpy(mesa_format tiledFormat, GLenum 
format,
   *cpp = 1;
   *mem_copy = memcpy;
} else if ((tiledFormat == MESA_FORMAT_B8G8R8A8_UNORM) ||
-  (tiledFormat == MESA_FORMAT_B8G8R8X8_UNORM)) {
+  (tiledFormat == MESA_FORMAT_B8G8R8X8_UNORM) ||
+  (tiledFormat == MESA_FORMAT_B8G8R8A8_SRGB) ||
+  (tiledFormat == MESA_FORMAT_B8G8R8X8_SRGB)) {
   *cpp = 4;
   if (format == GL_BGRA) {
  *mem_copy = memcpy;
@@ -766,7 +768,9 @@ bool intel_get_memcpy(mesa_format tiledFormat, GLenum 
format,
: rgba8_copy_aligned_src;
   }
} else if ((tiledFormat == MESA_FORMAT_R8G8B8A8_UNORM) ||
-  (tiledFormat == MESA_FORMAT_R8G8B8X8_UNORM)) {
+  (tiledFormat == MESA_FORMAT_R8G8B8X8_UNORM) ||
+  (tiledFormat == MESA_FORMAT_R8G8B8A8_SRGB) ||
+  (tiledFormat == MESA_FORMAT_R8G8B8X8_SRGB)) {
   *cpp = 4;
   if (format == GL_BGRA) {
  /* Copying from RGBA to BGRA is the same as BGRA to RGBA so we can

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv: Ignore unused dimensions in vkCreateImage's anv_image

2016-02-17 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 9963af8bbdcf424c4f1ff16d2122d003f7c99154
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9963af8bbdcf424c4f1ff16d2122d003f7c99154

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Feb 17 17:20:03 2016 -0800

anv: Ignore unused dimensions in vkCreateImage's anv_image

We ignore unused dimensions in the isl surface; do the same for the
resulting anv_image.

Reviewed-by: Kristian Høgsberg Kristensen <kristian.h.kristen...@intel.com>

---

 src/vulkan/anv_image.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/vulkan/anv_image.c b/src/vulkan/anv_image.c
index dfacced..0a412a3 100644
--- a/src/vulkan/anv_image.c
+++ b/src/vulkan/anv_image.c
@@ -139,6 +139,8 @@ make_surface(const struct anv_device *dev,
   unreachable("invalid image type");
}
 
+   image->extent = extent;
+
ok = isl_surf_init(>isl_dev, _surf->isl,
   .dim = vk_to_isl_surf_dim[vk_info->imageType],
   .format = anv_get_isl_format(vk_info->format, aspect,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (origin/vulkan/wip/txc): anv/meta_blit: Handle compressed textures in anv_CmdCopyImage

2016-02-18 Thread Nanley Chery
Module: Mesa
Branch: origin/vulkan/wip/txc
Commit: 2f28f3ad51b21ed548c88d31ea04dfc19eb20923
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2f28f3ad51b21ed548c88d31ea04dfc19eb20923

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Feb 18 14:05:31 2016 -0800

anv/meta_blit: Handle compressed textures in anv_CmdCopyImage

As with anv_CmdCopyBufferToImage, compressed textures require special
handling during copies.

---

 src/intel/vulkan/anv_meta_blit.c | 62 
 1 file changed, 37 insertions(+), 25 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 07ebcbc..06f13ec 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -696,31 +696,34 @@ void anv_CmdCopyImage(
  },
  cmd_buffer, 0);
 
-  const VkOffset3D dest_offset = {
- .x = pRegions[r].dstOffset.x,
- .y = pRegions[r].dstOffset.y,
- .z = 0,
-  };
-
-  unsigned num_slices;
-  if (src_image->type == VK_IMAGE_TYPE_3D) {
- assert(pRegions[r].srcSubresource.layerCount == 1 &&
-pRegions[r].dstSubresource.layerCount == 1);
- num_slices = pRegions[r].extent.depth;
-  } else {
- assert(pRegions[r].srcSubresource.layerCount ==
-pRegions[r].dstSubresource.layerCount);
- assert(pRegions[r].extent.depth == 1);
- num_slices = pRegions[r].dstSubresource.layerCount;
-  }
-
   const uint32_t dest_base_array_slice =
  anv_meta_get_iview_layer(dest_image, [r].dstSubresource,
   [r].dstOffset);
 
-  for (unsigned slice = 0; slice < num_slices; slice++) {
+
+  unsigned num_slices_3d = pRegions[r].extent.depth;
+  unsigned num_slices_array = pRegions[r].dstSubresource.layerCount;
+  unsigned slice_3d = 0;
+  unsigned slice_array = 0;
+  while (slice_3d < num_slices_3d && slice_array < num_slices_array) {
  VkOffset3D src_offset = pRegions[r].srcOffset;
- src_offset.z += slice;
+ src_offset.z += slice_3d + slice_array;
+
+ uint32_t img_x = 0;
+ uint32_t img_y = 0;
+ uint32_t img_o = 0;
+ if (isl_format_is_compressed(dest_image->format->isl_format))
+
isl_surf_get_image_intratile_offset_el(_buffer->device->isl_dev,
+   
_image->color_surface.isl,
+   
pRegions[r].dstSubresource.mipLevel,
+   
pRegions[r].dstSubresource.baseArrayLayer + slice_array,
+   pRegions[r].dstOffset.z + 
slice_3d,
+   _o, _x, _y);
+
+ VkOffset3D dest_offset_el = meta_region_offset_el(dest_image, 
[r].dstOffset);
+ dest_offset_el.x += img_x;
+ dest_offset_el.y += img_y;
+ dest_offset_el.z = 0;
 
  struct anv_image_view dest_iview;
  anv_image_view_init(_iview, cmd_buffer->device,
@@ -733,20 +736,29 @@ void anv_CmdCopyImage(
   .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
   .baseMipLevel = pRegions[r].dstSubresource.mipLevel,
   .levelCount = 1,
-  .baseArrayLayer = dest_base_array_slice + slice,
+  .baseArrayLayer = dest_base_array_slice +
+slice_array + slice_3d,
   .layerCount = 1
},
 },
-cmd_buffer, 0);
+cmd_buffer, img_o);
+
+ const VkExtent3D img_extent_el = 
meta_region_extent_el(dest_image->vk_format,
+
[r].extent);
 
  meta_emit_blit(cmd_buffer,
 src_image, _iview,
 src_offset,
-pRegions[r].extent,
+img_extent_el,
 dest_image, _iview,
-dest_offset,
-pRegions[r].extent,
+dest_offset_el,
+img_extent_el,
 VK_FILTER_NEAREST);
+
+ if (dest_image->type == VK_IMAGE_TYPE_3D)
+slice_3d++;
+ else
+slice_array++;
   }
}
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/blit2d: Use the tiling enum for simplicity

2016-03-09 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 7fbbad01706f08645e832e6dd2f5eeaf1e3c6894
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7fbbad01706f08645e832e6dd2f5eeaf1e3c6894

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue Mar  8 09:37:43 2016 -0800

anv/blit2d: Use the tiling enum for simplicity

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>

---

 src/intel/vulkan/anv_meta_blit2d.c | 6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit2d.c 
b/src/intel/vulkan/anv_meta_blit2d.c
index d49b470..6f07342 100644
--- a/src/intel/vulkan/anv_meta_blit2d.c
+++ b/src/intel/vulkan/anv_meta_blit2d.c
@@ -110,8 +110,7 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
   struct isl_tile_info tile_info;
 
   anv_image_info.isl_tiling_flags = 1 << src->tiling;
-  image_info.tiling = anv_image_info.isl_tiling_flags ==
-  ISL_TILING_LINEAR_BIT ?
+  image_info.tiling = src->tiling == ISL_TILING_LINEAR ?
   VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL;
   image_info.usage = src_usage;
   image_info.format = src_format,
@@ -125,8 +124,7 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
_buffer->pool->alloc, _image);
 
   anv_image_info.isl_tiling_flags = 1 << dst->tiling;
-  image_info.tiling = anv_image_info.isl_tiling_flags ==
-  ISL_TILING_LINEAR_BIT ?
+  image_info.tiling = dst->tiling == ISL_TILING_LINEAR ?
   VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL;
   image_info.usage = dst_usage;
   image_info.format = dst_format,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Split anv_meta_blit.c into three files

2016-03-09 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 627728cce55b8b67bb30bdd206affb6f0885315b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=627728cce55b8b67bb30bdd206affb6f0885315b

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Mar  7 15:15:33 2016 -0800

anv/meta: Split anv_meta_blit.c into three files

The new organization is as follows:
* anv_meta_blit.c: Blit and state setup/teardown commands
* anv_meta_copy.c: Copy and update commands
* anv_meta_blit2d.c: 2D Blitter API commands

Also, change the formatting to contain most lines
within 80 columns.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>

---

 src/intel/vulkan/Makefile.am   |   2 +
 src/intel/vulkan/anv_meta_blit.c   | 612 +
 src/intel/vulkan/anv_meta_blit2d.c | 213 +
 src/intel/vulkan/anv_meta_copy.c   | 441 ++
 4 files changed, 662 insertions(+), 606 deletions(-)

Diff:   
http://cgit.freedesktop.org/mesa/mesa/diff/?id=627728cce55b8b67bb30bdd206affb6f0885315b
___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Prefix anv_ to meta_emit_blit()

2016-03-09 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 514c0557178b0325c59a28d68b0f250f0eeaddf5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=514c0557178b0325c59a28d68b0f250f0eeaddf5

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue Mar  8 12:45:55 2016 -0800

anv/meta: Prefix anv_ to meta_emit_blit()

Follow the convention for non-static functions.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>

---

 src/intel/vulkan/anv_meta.h| 2 +-
 src/intel/vulkan/anv_meta_blit.c   | 4 ++--
 src/intel/vulkan/anv_meta_blit2d.c | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/intel/vulkan/anv_meta.h b/src/intel/vulkan/anv_meta.h
index fb562db..e2e0043 100644
--- a/src/intel/vulkan/anv_meta.h
+++ b/src/intel/vulkan/anv_meta.h
@@ -106,7 +106,7 @@ anv_meta_end_blit2d(struct anv_cmd_buffer *cmd_buffer,
 struct anv_meta_saved_state *save);
 
 void
-meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
+anv_meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
struct anv_image *src_image,
struct anv_image_view *src_iview,
VkOffset3D src_offset,
diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 7bddc6b..2c3c917 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -120,7 +120,7 @@ meta_prepare_blit(struct anv_cmd_buffer *cmd_buffer,
 }
 
 void
-meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
+anv_meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
struct anv_image *src_image,
struct anv_image_view *src_iview,
VkOffset3D src_offset,
@@ -438,7 +438,7 @@ void anv_CmdBlitImage(
  },
  cmd_buffer, 0, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
 
-  meta_emit_blit(cmd_buffer,
+  anv_meta_emit_blit(cmd_buffer,
  src_image, _iview,
  pRegions[r].srcOffsets[0], src_extent,
  dest_image, _iview,
diff --git a/src/intel/vulkan/anv_meta_blit2d.c 
b/src/intel/vulkan/anv_meta_blit2d.c
index b165abd..d49b470 100644
--- a/src/intel/vulkan/anv_meta_blit2d.c
+++ b/src/intel/vulkan/anv_meta_blit2d.c
@@ -195,7 +195,7 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
  _info, cmd_buffer, img_o, dst_usage);
 
   /* Perform blit */
-  meta_emit_blit(cmd_buffer,
+  anv_meta_emit_blit(cmd_buffer,
  anv_image_from_handle(src_image),
  _iview,
  src_offset_el,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Store src and dst usage flags in a variable

2016-03-09 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: ddbc6458464b86fa3f4f87f0f2db2f117fa04cdc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ddbc6458464b86fa3f4f87f0f2db2f117fa04cdc

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Mar  7 14:18:27 2016 -0800

anv/meta: Store src and dst usage flags in a variable

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>

---

 src/intel/vulkan/anv_meta_blit.c | 10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index ecd4d2d..82b79b8 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -440,6 +440,8 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
VkDevice vk_device = anv_device_to_handle(cmd_buffer->device);
VkFormat src_format = vk_format_for_size(src->bs);
VkFormat dst_format = vk_format_for_size(dst->bs);
+   VkImageUsageFlags src_usage = VK_IMAGE_USAGE_SAMPLED_BIT;
+   VkImageUsageFlags dst_usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
 
for (unsigned r = 0; r < num_rects; ++r) {
 
@@ -472,7 +474,7 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
   anv_image_info.isl_tiling_flags = 1 << src->tiling;
   image_info.tiling = anv_image_info.isl_tiling_flags == 
ISL_TILING_LINEAR_BIT ?
 VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL;
-  image_info.usage = VK_IMAGE_USAGE_SAMPLED_BIT;
+  image_info.usage = src_usage;
   image_info.format = src_format,
   isl_tiling_get_info(_buffer->device->isl_dev, src->tiling, src->bs, 
_info);
   image_info.extent.height = rects[r].height +
@@ -485,7 +487,7 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
   anv_image_info.isl_tiling_flags = 1 << dst->tiling;
   image_info.tiling = anv_image_info.isl_tiling_flags == 
ISL_TILING_LINEAR_BIT ?
 VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL;
-  image_info.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+  image_info.usage = dst_usage;
   image_info.format = dst_format,
   isl_tiling_get_info(_buffer->device->isl_dev, dst->tiling, dst->bs, 
_info);
   image_info.extent.height = rects[r].height +
@@ -533,7 +535,7 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
 
   struct anv_image_view src_iview;
   anv_image_view_init(_iview, cmd_buffer->device,
- _info, cmd_buffer, img_o, VK_IMAGE_USAGE_SAMPLED_BIT);
+ _info, cmd_buffer, img_o, src_usage);
 
   iview_info.image = dst_image;
   iview_info.format = dst_format;
@@ -548,7 +550,7 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
 (uint32_t*)_offset_el.y);
   struct anv_image_view dst_iview;
   anv_image_view_init(_iview, cmd_buffer->device,
- _info, cmd_buffer, img_o, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
+ _info, cmd_buffer, img_o, dst_usage);
 
   /* Perform blit */
   meta_emit_blit(cmd_buffer,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Minimize height of images used for copies

2016-03-09 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 7ebbc3946ae9cffb3c3db522dcbe2f1041633164
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7ebbc3946ae9cffb3c3db522dcbe2f1041633164

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Mar  4 11:43:19 2016 -0800

anv/meta: Minimize height of images used for copies

In addition to demystifying the value being added to the height,
this future-proofs the code for new tiling modes and keeps the
image height as small as possible.

v2: Actually use the smallest height possible.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>

---

 src/intel/vulkan/anv_meta_blit.c | 14 --
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index b8a42f9..ecd4d2d 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -450,8 +450,7 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
  .format = 0, /* TEMPLATE */
  .extent = {
 .width = 0, /* TEMPLATE */
-/* Pad to highest tile height to compensate for a vertical 
intratile offset */
-.height = MIN(rects[r].height + 64, 1 << 14),
+.height = 0, /* TEMPLATE */
 .depth = 1,
  },
  .mipLevels = 1,
@@ -465,11 +464,19 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
  .isl_tiling_flags = 0, /* TEMPLATE */
   };
 
+  /* The image height is the rect height + src/dst y-offset from the
+   * tile-aligned base address.
+   */
+  struct isl_tile_info tile_info;
+
   anv_image_info.isl_tiling_flags = 1 << src->tiling;
   image_info.tiling = anv_image_info.isl_tiling_flags == 
ISL_TILING_LINEAR_BIT ?
 VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL;
   image_info.usage = VK_IMAGE_USAGE_SAMPLED_BIT;
   image_info.format = src_format,
+  isl_tiling_get_info(_buffer->device->isl_dev, src->tiling, src->bs, 
_info);
+  image_info.extent.height = rects[r].height +
+ rects[r].src_y % tile_info.height;
   image_info.extent.width = src->pitch / src->bs;
   VkImage src_image;
   anv_image_create(vk_device, _image_info,
@@ -480,6 +487,9 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
 VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL;
   image_info.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
   image_info.format = dst_format,
+  isl_tiling_get_info(_buffer->device->isl_dev, dst->tiling, dst->bs, 
_info);
+  image_info.extent.height = rects[r].height +
+ rects[r].dst_y % tile_info.height;
   image_info.extent.width = dst->pitch / dst->bs;
   VkImage dst_image;
   anv_image_create(vk_device, _image_info,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Make meta_emit_blit() public

2016-03-09 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: f39168392243d6dacefbc8708b764c5978ff24df
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f39168392243d6dacefbc8708b764c5978ff24df

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Mar  7 22:38:05 2016 -0800

anv/meta: Make meta_emit_blit() public

This can be reverted if the only other consumer, anv_meta_blit2d(),
uses a different method.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>

---

 src/intel/vulkan/anv_meta.h  | 11 +++
 src/intel/vulkan/anv_meta_blit.c |  2 +-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/intel/vulkan/anv_meta.h b/src/intel/vulkan/anv_meta.h
index 587c044..fb562db 100644
--- a/src/intel/vulkan/anv_meta.h
+++ b/src/intel/vulkan/anv_meta.h
@@ -105,6 +105,17 @@ void
 anv_meta_end_blit2d(struct anv_cmd_buffer *cmd_buffer,
 struct anv_meta_saved_state *save);
 
+void
+meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
+   struct anv_image *src_image,
+   struct anv_image_view *src_iview,
+   VkOffset3D src_offset,
+   VkExtent3D src_extent,
+   struct anv_image *dest_image,
+   struct anv_image_view *dest_iview,
+   VkOffset3D dest_offset,
+   VkExtent3D dest_extent,
+   VkFilter blit_filter);
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 82b79b8..57833bf 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -160,7 +160,7 @@ meta_region_extent_el(const VkFormat format,
};
 }
 
-static void
+void
 meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
struct anv_image *src_image,
struct anv_image_view *src_iview,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): Revert "anv/meta: Prefix anv_ to meta_emit_blit()"

2016-03-19 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 1a0c63b8804812081d660642539bb411dc560992
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1a0c63b8804812081d660642539bb411dc560992

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Mar 11 16:25:02 2016 -0800

Revert "anv/meta: Prefix anv_ to meta_emit_blit()"

This reverts commit 514c0557178b0325c59a28d68b0f250f0eeaddf5.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta.h  | 2 +-
 src/intel/vulkan/anv_meta_blit.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/intel/vulkan/anv_meta.h b/src/intel/vulkan/anv_meta.h
index 9ae..5616252 100644
--- a/src/intel/vulkan/anv_meta.h
+++ b/src/intel/vulkan/anv_meta.h
@@ -109,7 +109,7 @@ anv_meta_end_blit2d(struct anv_cmd_buffer *cmd_buffer,
 struct anv_meta_saved_state *save);
 
 void
-anv_meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
+meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
struct anv_image *src_image,
struct anv_image_view *src_iview,
VkOffset3D src_offset,
diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 2c3c917..7bddc6b 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -120,7 +120,7 @@ meta_prepare_blit(struct anv_cmd_buffer *cmd_buffer,
 }
 
 void
-anv_meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
+meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
struct anv_image *src_image,
struct anv_image_view *src_iview,
VkOffset3D src_offset,
@@ -438,7 +438,7 @@ void anv_CmdBlitImage(
  },
  cmd_buffer, 0, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
 
-  anv_meta_emit_blit(cmd_buffer,
+  meta_emit_blit(cmd_buffer,
  src_image, _iview,
  pRegions[r].srcOffsets[0], src_extent,
  dest_image, _iview,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/blit2d: Only use one extent in meta_emit_blit2d

2016-03-19 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 5647de8ba56d8b4f2247eecc2cfcb3ec596dafe1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5647de8ba56d8b4f2247eecc2cfcb3ec596dafe1

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Mar 14 08:15:16 2016 -0700

anv/blit2d: Only use one extent in meta_emit_blit2d

Since scaling isn't involved, we don't need multiple extents.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit2d.c | 18 --
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit2d.c 
b/src/intel/vulkan/anv_meta_blit2d.c
index 4fab5d1..cb7e64b 100644
--- a/src/intel/vulkan/anv_meta_blit2d.c
+++ b/src/intel/vulkan/anv_meta_blit2d.c
@@ -58,10 +58,9 @@ static void
 meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
struct anv_image_view *src_iview,
VkOffset3D src_offset,
-   VkExtent3D src_extent,
struct anv_image_view *dest_iview,
VkOffset3D dest_offset,
-   VkExtent3D dest_extent)
+   VkExtent3D extent)
 {
struct anv_device *device = cmd_buffer->device;
 
@@ -79,12 +78,12 @@ meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
 
vb_data[0] = (struct blit_vb_data) {
   .pos = {
- dest_offset.x + dest_extent.width,
- dest_offset.y + dest_extent.height,
+ dest_offset.x + extent.width,
+ dest_offset.y + extent.height,
   },
   .tex_coord = {
- src_offset.x + src_extent.width,
- src_offset.y + src_extent.height,
+ src_offset.x + extent.width,
+ src_offset.y + extent.height,
  src_offset.z,
   },
};
@@ -92,11 +91,11 @@ meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
vb_data[1] = (struct blit_vb_data) {
   .pos = {
  dest_offset.x,
- dest_offset.y + dest_extent.height,
+ dest_offset.y + extent.height,
   },
   .tex_coord = {
  src_offset.x,
- src_offset.y + src_extent.height,
+ src_offset.y + extent.height,
  src_offset.z,
   },
};
@@ -197,7 +196,7 @@ meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
  .framebuffer = fb,
  .renderArea = {
 .offset = { dest_offset.x, dest_offset.y },
-.extent = { dest_extent.width, dest_extent.height },
+.extent = { extent.width, extent.height },
  },
  .clearValueCount = 0,
  .pClearValues = NULL,
@@ -381,7 +380,6 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
   meta_emit_blit2d(cmd_buffer,
  _iview,
  src_offset_el,
- (VkExtent3D){rects[r].width, rects[r].height, 1},
  _iview,
  dst_offset_el,
  (VkExtent3D){rects[r].width, rects[r].height, 1});

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/blit: Remove completed finishme for VkFilter

2016-03-19 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: f33866ae0a4279af03997fa3fa7a47e2eb7ec8fe
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f33866ae0a4279af03997fa3fa7a47e2eb7ec8fe

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Mar 14 11:11:50 2016 -0700

anv/blit: Remove completed finishme for VkFilter

This task was finished as of:
d9079648d0f1c380929dea0f3a447ddfdf5dcd27.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 09e2dbb..b83fa68 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -366,8 +366,6 @@ void anv_CmdBlitImage(
assert(src_image->samples == 1);
assert(dest_image->samples == 1);
 
-   anv_finishme("respect VkFilter");
-
meta_prepare_blit(cmd_buffer, _state);
 
for (unsigned r = 0; r < regionCount; r++) {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/blit2d: Remove sampler from pipeline

2016-03-19 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 92fb65f1176334159c9b2327bbb693332b0b6bb6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=92fb65f1176334159c9b2327bbb693332b0b6bb6

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Mar 10 18:25:10 2016 -0800

anv/blit2d: Remove sampler from pipeline

Since we're using texelFetch with a sampled image, a sampler is no
longer needed. This agrees with the Vulkan Spec section 13.2.4
Descriptor Set Updates:

sampler is a sampler handle, and is used in descriptor updates for types
VK_DESCRIPTOR_TYPE_SAMPLER and VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
if the binding being updated does not use immutable samplers.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit2d.c | 18 --
 1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit2d.c 
b/src/intel/vulkan/anv_meta_blit2d.c
index 839ab02..4fab5d1 100644
--- a/src/intel/vulkan/anv_meta_blit2d.c
+++ b/src/intel/vulkan/anv_meta_blit2d.c
@@ -132,14 +132,6 @@ meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
  sizeof(struct anv_vue_header),
   });
 
-   VkSampler sampler;
-   ANV_CALL(CreateSampler)(anv_device_to_handle(device),
-  &(VkSamplerCreateInfo) {
- .sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
- .magFilter = VK_FILTER_NEAREST,
- .minFilter = VK_FILTER_NEAREST,
-  }, _buffer->pool->alloc, );
-
VkDescriptorPool desc_pool;
anv_CreateDescriptorPool(anv_device_to_handle(device),
   &(const VkDescriptorPoolCreateInfo) {
@@ -150,7 +142,7 @@ meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
  .poolSizeCount = 1,
  .pPoolSizes = (VkDescriptorPoolSize[]) {
 {
-   .type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
+   .type = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
.descriptorCount = 1
 },
  }
@@ -174,10 +166,10 @@ meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
 .dstBinding = 0,
 .dstArrayElement = 0,
 .descriptorCount = 1,
-.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
+.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
 .pImageInfo = (VkDescriptorImageInfo[]) {
{
-  .sampler = sampler,
+  .sampler = NULL,
   .imageView = anv_image_view_to_handle(src_iview),
   .imageLayout = VK_IMAGE_LAYOUT_GENERAL,
},
@@ -242,8 +234,6 @@ meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
 */
anv_DestroyDescriptorPool(anv_device_to_handle(device),
  desc_pool, _buffer->pool->alloc);
-   anv_DestroySampler(anv_device_to_handle(device), sampler,
-  _buffer->pool->alloc);
anv_DestroyFramebuffer(anv_device_to_handle(device), fb,
   _buffer->pool->alloc);
 }
@@ -593,7 +583,7 @@ anv_device_init_meta_blit2d_state(struct anv_device *device)
   .pBindings = (VkDescriptorSetLayoutBinding[]) {
  {
 .binding = 0,
-.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
+.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
 .descriptorCount = 1,
 .stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT,
 .pImmutableSamplers = NULL

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/blit: Reduce number of VUE headers being read

2016-03-19 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 5464f0c046ac68630355932639f18a02dc4b2d92
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5464f0c046ac68630355932639f18a02dc4b2d92

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Mar 10 11:06:25 2016 -0800

anv/blit: Reduce number of VUE headers being read

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c   | 2 +-
 src/intel/vulkan/anv_meta_blit2d.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index b83fa68..e23b697 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -536,7 +536,7 @@ anv_device_init_meta_blit_state(struct anv_device *device)
  {
 .binding = 0,
 .stride = 0,
-.inputRate = VK_VERTEX_INPUT_RATE_VERTEX
+.inputRate = VK_VERTEX_INPUT_RATE_INSTANCE
  },
  {
 .binding = 1,
diff --git a/src/intel/vulkan/anv_meta_blit2d.c 
b/src/intel/vulkan/anv_meta_blit2d.c
index cb7e64b..4a0bed1 100644
--- a/src/intel/vulkan/anv_meta_blit2d.c
+++ b/src/intel/vulkan/anv_meta_blit2d.c
@@ -541,7 +541,7 @@ anv_device_init_meta_blit2d_state(struct anv_device *device)
  {
 .binding = 0,
 .stride = 0,
-.inputRate = VK_VERTEX_INPUT_RATE_VERTEX
+.inputRate = VK_VERTEX_INPUT_RATE_INSTANCE
  },
  {
 .binding = 1,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): Revert "anv/meta: Make meta_emit_blit() public"

2016-03-19 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: b487acc489afc277a7611f14e7319bc7340e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b487acc489afc277a7611f14e7319bc7340e

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Mar 11 16:26:28 2016 -0800

Revert "anv/meta: Make meta_emit_blit() public"

This reverts commit f39168392243d6dacefbc8708b764c5978ff24df.

Some conflicts had to be resolved in order for this revert to be
successful.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta.h  | 11 ---
 src/intel/vulkan/anv_meta_blit.c |  2 +-
 2 files changed, 1 insertion(+), 12 deletions(-)

diff --git a/src/intel/vulkan/anv_meta.h b/src/intel/vulkan/anv_meta.h
index 5616252..6bd5c1d 100644
--- a/src/intel/vulkan/anv_meta.h
+++ b/src/intel/vulkan/anv_meta.h
@@ -108,17 +108,6 @@ void
 anv_meta_end_blit2d(struct anv_cmd_buffer *cmd_buffer,
 struct anv_meta_saved_state *save);
 
-void
-meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
-   struct anv_image *src_image,
-   struct anv_image_view *src_iview,
-   VkOffset3D src_offset,
-   VkExtent3D src_extent,
-   struct anv_image *dest_image,
-   struct anv_image_view *dest_iview,
-   VkOffset3D dest_offset,
-   VkExtent3D dest_extent,
-   VkFilter blit_filter);
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 7bddc6b..09e2dbb 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -119,7 +119,7 @@ meta_prepare_blit(struct anv_cmd_buffer *cmd_buffer,
  (1 << VK_DYNAMIC_STATE_VIEWPORT));
 }
 
-void
+static void
 meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
struct anv_image *src_image,
struct anv_image_view *src_iview,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/blit2d: Use texel fetch in frag shader

2016-03-20 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: f8f98869157b678320ab8b8fcd50ab7285dac0be
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f8f98869157b678320ab8b8fcd50ab7285dac0be

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Mar 10 16:06:14 2016 -0800

anv/blit2d: Use texel fetch in frag shader

The texelFetch operation requires that the sampled texture coordinates
be unnormalized integers. This will simplify the copy shader for
w-tiled images (stencil buffers).

v2 (Jason):
   Use f2i for texel coords
   Fix num_components indirectly
   Use float inputs for interpolation
   Nest tex_pos functions

Suggested-by: Jason Ekstrand <jason.ekstr...@intel.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit2d.c | 43 --
 1 file changed, 18 insertions(+), 25 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit2d.c 
b/src/intel/vulkan/anv_meta_blit2d.c
index 78d4b04..839ab02 100644
--- a/src/intel/vulkan/anv_meta_blit2d.c
+++ b/src/intel/vulkan/anv_meta_blit2d.c
@@ -83,11 +83,9 @@ meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
  dest_offset.y + dest_extent.height,
   },
   .tex_coord = {
- (float)(src_offset.x + src_extent.width)
-/ (float)src_iview->extent.width,
- (float)(src_offset.y + src_extent.height)
-/ (float)src_iview->extent.height,
- (float)src_offset.z / (float)src_iview->extent.depth,
+ src_offset.x + src_extent.width,
+ src_offset.y + src_extent.height,
+ src_offset.z,
   },
};
 
@@ -97,10 +95,9 @@ meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
  dest_offset.y + dest_extent.height,
   },
   .tex_coord = {
- (float)src_offset.x / (float)src_iview->extent.width,
- (float)(src_offset.y + src_extent.height) /
-(float)src_iview->extent.height,
- (float)src_offset.z / (float)src_iview->extent.depth,
+ src_offset.x,
+ src_offset.y + src_extent.height,
+ src_offset.z,
   },
};
 
@@ -110,9 +107,9 @@ meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
  dest_offset.y,
   },
   .tex_coord = {
- (float)src_offset.x / (float)src_iview->extent.width,
- (float)src_offset.y / (float)src_iview->extent.height,
- (float)src_offset.z / (float)src_iview->extent.depth,
+ src_offset.x,
+ src_offset.y,
+ src_offset.z,
   },
};
 
@@ -438,22 +435,16 @@ static nir_shader *
 build_nir_copy_fragment_shader(enum glsl_sampler_dim tex_dim)
 {
const struct glsl_type *vec4 = glsl_vec4_type();
+   const struct glsl_type *vec3 = glsl_vector_type(GLSL_TYPE_FLOAT, 3);
nir_builder b;
 
nir_builder_init_simple_shader(, NULL, MESA_SHADER_FRAGMENT, NULL);
-   b.shader->info.name = ralloc_strdup(b.shader, "meta_blit_fs");
+   b.shader->info.name = ralloc_strdup(b.shader, "meta_blit2d_fs");
 
nir_variable *tex_pos_in = nir_variable_create(b.shader, nir_var_shader_in,
-  vec4, "v_tex_pos");
+  vec3, "v_tex_pos");
tex_pos_in->data.location = VARYING_SLOT_VAR0;
-
-   /* Swizzle the array index which comes in as Z coordinate into the right
-* position.
-*/
-   unsigned swz[] = { 0, (tex_dim == GLSL_SAMPLER_DIM_1D ? 2 : 1), 2 };
-   nir_ssa_def *const tex_pos =
-  nir_swizzle(, nir_load_var(, tex_pos_in), swz,
-  (tex_dim == GLSL_SAMPLER_DIM_1D ? 2 : 3), false);
+   nir_ssa_def *const tex_pos = nir_f2i(, nir_load_var(, tex_pos_in));
 
const struct glsl_type *sampler_type =
   glsl_sampler_type(tex_dim, false, tex_dim != GLSL_SAMPLER_DIM_3D,
@@ -463,16 +454,18 @@ build_nir_copy_fragment_shader(enum glsl_sampler_dim 
tex_dim)
sampler->data.descriptor_set = 0;
sampler->data.binding = 0;
 
-   nir_tex_instr *tex = nir_tex_instr_create(b.shader, 1);
+   nir_tex_instr *tex = nir_tex_instr_create(b.shader, 2);
tex->sampler_dim = tex_dim;
-   tex->op = nir_texop_tex;
+   tex->op = nir_texop_txf;
tex->src[0].src_type = nir_tex_src_coord;
tex->src[0].src = nir_src_for_ssa(tex_pos);
+   tex->src[1].src_type = nir_tex_src_lod;
+   tex->src[1].src = nir_src_for_ssa(nir_imm_int(, 0));
tex->dest_type = nir_type_float; /* TODO */
tex->is_array = glsl_sampler_type_is_array(sampler_type);
tex->coord_components = tex_pos->num_components;
tex->texture = nir_deref_var_create(tex, sampler);
-   tex->sampler = nir_deref_var_create(tex, sampler);
+   tex->sampler = NULL;
 
nir_ssa_dest_init(>instr, >dest, 4, "tex");
nir_builder_instr_insert(, >instr);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/blit2d: Copy anv_meta_blit.c functions

2016-03-19 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 2d8c6321177a92f6f1383adc1e75dde1610cfc64
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2d8c6321177a92f6f1383adc1e75dde1610cfc64

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue Mar  8 14:12:55 2016 -0800

anv/blit2d: Copy anv_meta_blit.c functions

These will be customized for blit2d operations.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta.h|   3 +
 src/intel/vulkan/anv_meta_blit2d.c | 597 +
 2 files changed, 600 insertions(+)

diff --git a/src/intel/vulkan/anv_meta.h b/src/intel/vulkan/anv_meta.h
index e2e0043..9ae 100644
--- a/src/intel/vulkan/anv_meta.h
+++ b/src/intel/vulkan/anv_meta.h
@@ -53,6 +53,9 @@ void anv_device_finish_meta_resolve_state(struct anv_device 
*device);
 VkResult anv_device_init_meta_blit_state(struct anv_device *device);
 void anv_device_finish_meta_blit_state(struct anv_device *device);
 
+VkResult anv_device_init_meta_blit2d_state(struct anv_device *device);
+void anv_device_finish_meta_blit2d_state(struct anv_device *device);
+
 void
 anv_meta_save(struct anv_meta_saved_state *state,
   const struct anv_cmd_buffer *cmd_buffer,
diff --git a/src/intel/vulkan/anv_meta_blit2d.c 
b/src/intel/vulkan/anv_meta_blit2d.c
index 6f07342..2d447eb 100644
--- a/src/intel/vulkan/anv_meta_blit2d.c
+++ b/src/intel/vulkan/anv_meta_blit2d.c
@@ -22,6 +22,7 @@
  */
 
 #include "anv_meta.h"
+#include "nir/nir_builder.h"
 
 static VkFormat
 vk_format_for_size(int bs)
@@ -53,6 +54,222 @@ vk_format_for_size(int bs)
}
 }
 
+static void
+meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
+   struct anv_image *src_image,
+   struct anv_image_view *src_iview,
+   VkOffset3D src_offset,
+   VkExtent3D src_extent,
+   struct anv_image *dest_image,
+   struct anv_image_view *dest_iview,
+   VkOffset3D dest_offset,
+   VkExtent3D dest_extent,
+   VkFilter blit_filter)
+{
+   struct anv_device *device = cmd_buffer->device;
+
+   struct blit_vb_data {
+  float pos[2];
+  float tex_coord[3];
+   } *vb_data;
+
+   assert(src_image->samples == dest_image->samples);
+
+   unsigned vb_size = sizeof(struct anv_vue_header) + 3 * sizeof(*vb_data);
+
+   struct anv_state vb_state =
+  anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, vb_size, 16);
+   memset(vb_state.map, 0, sizeof(struct anv_vue_header));
+   vb_data = vb_state.map + sizeof(struct anv_vue_header);
+
+   vb_data[0] = (struct blit_vb_data) {
+  .pos = {
+ dest_offset.x + dest_extent.width,
+ dest_offset.y + dest_extent.height,
+  },
+  .tex_coord = {
+ (float)(src_offset.x + src_extent.width)
+/ (float)src_iview->extent.width,
+ (float)(src_offset.y + src_extent.height)
+/ (float)src_iview->extent.height,
+ (float)src_offset.z / (float)src_iview->extent.depth,
+  },
+   };
+
+   vb_data[1] = (struct blit_vb_data) {
+  .pos = {
+ dest_offset.x,
+ dest_offset.y + dest_extent.height,
+  },
+  .tex_coord = {
+ (float)src_offset.x / (float)src_iview->extent.width,
+ (float)(src_offset.y + src_extent.height) /
+(float)src_iview->extent.height,
+ (float)src_offset.z / (float)src_iview->extent.depth,
+  },
+   };
+
+   vb_data[2] = (struct blit_vb_data) {
+  .pos = {
+ dest_offset.x,
+ dest_offset.y,
+  },
+  .tex_coord = {
+ (float)src_offset.x / (float)src_iview->extent.width,
+ (float)src_offset.y / (float)src_iview->extent.height,
+ (float)src_offset.z / (float)src_iview->extent.depth,
+  },
+   };
+
+   anv_state_clflush(vb_state);
+
+   struct anv_buffer vertex_buffer = {
+  .device = device,
+  .size = vb_size,
+  .bo = >dynamic_state_block_pool.bo,
+  .offset = vb_state.offset,
+   };
+
+   anv_CmdBindVertexBuffers(anv_cmd_buffer_to_handle(cmd_buffer), 0, 2,
+  (VkBuffer[]) {
+ anv_buffer_to_handle(_buffer),
+ anv_buffer_to_handle(_buffer)
+  },
+  (VkDeviceSize[]) {
+ 0,
+ sizeof(struct anv_vue_header),
+  });
+
+   VkSampler sampler;
+   ANV_CALL(CreateSampler)(anv_device_to_handle(device),
+  &(VkSamplerCreateInfo) {
+ .sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
+ .magFilter = blit_filter,
+ .minFilter = blit_filter,
+  }, _buffer->pool->alloc, );
+
+   VkDescriptorPool desc_pool;
+   anv_CreateDescriptorPool(anv_device_to_handle(device),
+  &(const VkDescriptorPoolCreateInfo) {
+ .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
+ .pNext = NULL,
+ .flags = 0,
+   

Mesa (vulkan): anv/image: Enable specifying a surface's minimum pitch

2016-03-25 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 4eab37d6cda54a4ac600347f764ef223c3a7459f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4eab37d6cda54a4ac600347f764ef223c3a7459f

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Mar 21 10:41:06 2016 -0700

anv/image: Enable specifying a surface's minimum pitch

This is required to create multiple, horizontally adjacent, max-width
images from one blit2d surface. This is also required for more accurate
width specification of surfaces within a larger surface (which is seen
as the smaller surface's enclosing region).

Note that anv_image_create_info::stride has been unused since commit,
b36938964063a4072abfd779f5607743dbc3b6f1 .

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net>

---

 src/intel/vulkan/anv_image.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index b47425b..266fbe7 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -138,7 +138,7 @@ make_surface(const struct anv_device *dev,
   .array_len = vk_info->arrayLayers,
   .samples = vk_info->samples,
   .min_alignment = 0,
-  .min_pitch = 0,
+  .min_pitch = anv_info->stride,
   .usage = choose_isl_surf_usage(image->usage, aspect),
   .tiling_flags = tiling_flags);
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/blit2d: Add a function to create an ImageView

2016-03-25 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 0e82896a116ea0212dfcb13fb1456c93732d8564
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0e82896a116ea0212dfcb13fb1456c93732d8564

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Mar 18 15:12:32 2016 -0700

anv/blit2d: Add a function to create an ImageView

This function differs from the open-coded implementation in that the
ImageView's width is determined by the caller and is not unconditionally
set to match the number of texels within the surface's pitch.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net>

---

 src/intel/vulkan/anv_meta_blit2d.c | 196 -
 1 file changed, 83 insertions(+), 113 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit2d.c 
b/src/intel/vulkan/anv_meta_blit2d.c
index 87c3358..734ba8e 100644
--- a/src/intel/vulkan/anv_meta_blit2d.c
+++ b/src/intel/vulkan/anv_meta_blit2d.c
@@ -55,6 +55,81 @@ vk_format_for_size(int bs)
 }
 
 static void
+create_iview(struct anv_cmd_buffer *cmd_buffer,
+ struct anv_meta_blit2d_surf *surf,
+ struct anv_meta_blit2d_rect *rect,
+ VkImageUsageFlags usage,
+ VkImage *img,
+ struct anv_image_view *iview)
+{
+   struct isl_tile_info tile_info;
+   isl_tiling_get_info(_buffer->device->isl_dev,
+   surf->tiling, surf->bs, _info);
+   const unsigned tile_width_px = tile_info.width > surf->bs ?
+  tile_info.width / surf->bs : 1;
+   uint32_t *rect_y = (usage == VK_IMAGE_USAGE_SAMPLED_BIT) ?
+  >src_y : >dst_y;
+   uint32_t *rect_x = (usage == VK_IMAGE_USAGE_SAMPLED_BIT) ?
+  >src_x : >dst_x;
+
+   /* Define the shared state among all created image views */
+   const VkImageCreateInfo image_info = {
+  .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
+  .imageType = VK_IMAGE_TYPE_2D,
+  .format = vk_format_for_size(surf->bs),
+  .extent = {
+ .width = rect->width + (*rect_x) % tile_width_px,
+ .height = rect->height + (*rect_y) % tile_info.height,
+ .depth = 1,
+  },
+  .mipLevels = 1,
+  .arrayLayers = 1,
+  .samples = 1,
+  .tiling = surf->tiling == ISL_TILING_LINEAR ?
+VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL,
+  .usage = usage,
+   };
+
+   /* Create the VkImage that is bound to the surface's memory. */
+   anv_image_create(anv_device_to_handle(cmd_buffer->device),
+&(struct anv_image_create_info) {
+   .vk_info = _info,
+   .isl_tiling_flags = 1 << surf->tiling,
+   .stride = surf->pitch,
+}, _buffer->pool->alloc, img);
+
+   /* We could use a vk call to bind memory, but that would require
+* creating a dummy memory object etc. so there's really no point.
+*/
+   anv_image_from_handle(*img)->bo = surf->bo;
+   anv_image_from_handle(*img)->offset = surf->base_offset;
+
+   /* Create a VkImageView that starts at the tile aligned offset closest
+* to the provided x/y offset into the surface.
+*/
+   uint32_t img_o = 0;
+   isl_surf_get_image_intratile_offset_el_xy(_buffer->device->isl_dev,
+ _image_from_handle(*img)->
+color_surface.isl,
+ *rect_x, *rect_y,
+ _o, rect_x, rect_y);
+   anv_image_view_init(iview, cmd_buffer->device,
+   &(VkImageViewCreateInfo) {
+  .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
+  .image = *img,
+  .viewType = VK_IMAGE_VIEW_TYPE_2D,
+  .format = image_info.format,
+  .subresourceRange = {
+ .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+ .baseMipLevel = 0,
+ .levelCount = 1,
+ .baseArrayLayer = 0,
+ .layerCount = 1
+  },
+   }, cmd_buffer, img_o, usage);
+}
+
+static void
 meta_emit_blit2d(struct anv_cmd_buffer *cmd_buffer,
struct anv_image_view *src_iview,
VkOffset3D src_offset,
@@ -260,132 +335,27 @@ anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
 struct anv_meta_blit2d_rect *rects)
 {
VkDevice vk_device = anv_device_to_handle(cmd_buffer->device);
-   VkFormat src_format = vk_format_for_size(src->bs);
-   VkFormat dst_format = vk_format_for_size(dst->bs);
VkImageUsageFlags src_usage = VK_IMAGE_USAGE_SAMPLED_BIT;
VkImageUsageFlags 

Mesa (vulkan): anv: Sanitize Image extents and offsets

2016-03-24 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: a5dc3c0f02aa523d1d3d123b62b9a187821079fe
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a5dc3c0f02aa523d1d3d123b62b9a187821079fe

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue Mar 22 10:53:37 2016 -0700

anv: Sanitize Image extents and offsets

Prepare Image extents and offsets for internal consumption by assigning
the default values implicitly defned by the spec. Fixes textures on
several Vulkan demos in which the VkImageCopy depth is set to zero when
copying a 2D image.

v2 (Jason Ekstrand):
   Replace "prep" with "sanitize"
   Make function static inline
   Pass structs instead of pointers

Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>
Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>

---

 src/intel/vulkan/anv_image.c| 24 -
 src/intel/vulkan/anv_meta_copy.c| 53 ++---
 src/intel/vulkan/anv_meta_resolve.c | 41 +---
 src/intel/vulkan/anv_private.h  | 33 +++
 4 files changed, 106 insertions(+), 45 deletions(-)

diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index 143a084..b47425b 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -124,30 +124,16 @@ make_surface(const struct anv_device *dev,
 
struct anv_surface *anv_surf = get_surface(image, aspect);
 
-   VkExtent3D extent;
-   switch (vk_info->imageType) {
-   case VK_IMAGE_TYPE_1D:
-  extent = (VkExtent3D) { vk_info->extent.width, 1, 1 };
-  break;
-   case VK_IMAGE_TYPE_2D:
-  extent = (VkExtent3D) { vk_info->extent.width, vk_info->extent.height, 1 
};
-  break;
-   case VK_IMAGE_TYPE_3D:
-  extent = vk_info->extent;
-  break;
-   default:
-  unreachable("invalid image type");
-   }
-
-   image->extent = extent;
+   image->extent = anv_sanitize_image_extent(vk_info->imageType,
+ vk_info->extent);
 
ok = isl_surf_init(>isl_dev, _surf->isl,
   .dim = vk_to_isl_surf_dim[vk_info->imageType],
   .format = anv_get_isl_format(vk_info->format, aspect,
vk_info->tiling, NULL),
-  .width = extent.width,
-  .height = extent.height,
-  .depth = extent.depth,
+  .width = image->extent.width,
+  .height = image->extent.height,
+  .depth = image->extent.depth,
   .levels = vk_info->mipLevels,
   .array_len = vk_info->arrayLayers,
   .samples = vk_info->samples,
diff --git a/src/intel/vulkan/anv_meta_copy.c b/src/intel/vulkan/anv_meta_copy.c
index 1a2bfd6..982fa7e 100644
--- a/src/intel/vulkan/anv_meta_copy.c
+++ b/src/intel/vulkan/anv_meta_copy.c
@@ -28,16 +28,16 @@
  * if Image is uncompressed or compressed, respectively.
  */
 static struct VkExtent3D
-meta_region_extent_el(const VkFormat format,
+meta_region_extent_el(const struct anv_image *image,
   const struct VkExtent3D *extent)
 {
const struct isl_format_layout *isl_layout =
-  anv_format_for_vk_format(format)->isl_layout;
-   return (VkExtent3D) {
+  anv_format_for_vk_format(image->vk_format)->isl_layout;
+   return anv_sanitize_image_extent(image->type, (VkExtent3D) {
   .width  = DIV_ROUND_UP(extent->width , isl_layout->bw),
   .height = DIV_ROUND_UP(extent->height, isl_layout->bh),
   .depth  = DIV_ROUND_UP(extent->depth , isl_layout->bd),
-   };
+   });
 }
 
 /* Returns the user-provided VkBufferImageCopy::imageOffset in units of
@@ -49,11 +49,11 @@ meta_region_offset_el(const struct anv_image *image,
   const struct VkOffset3D *offset)
 {
const struct isl_format_layout *isl_layout = image->format->isl_layout;
-   return (VkOffset3D) {
+   return anv_sanitize_image_offset(image->type, (VkOffset3D) {
   .x = offset->x / isl_layout->bw,
   .y = offset->y / isl_layout->bh,
   .z = offset->z / isl_layout->bd,
-   };
+   });
 }
 
 static struct anv_meta_blit2d_surf
@@ -115,17 +115,28 @@ meta_copy_buffer_to_image(struct anv_cmd_buffer 
*cmd_buffer,
 
for (unsigned r = 0; r < regionCount; r++) {
 
-  /* Start creating blit rect */
+  /**
+   * From the Vulkan 1.0.6 spec: 18.3 Copying Data Between Images
+   *extent is the size in texels of the source image to copy in width,
+   *height and depth. 1D images use only x and width. 2D images use x, 
y,
+   *width and height. 3D images use x, y, z, width, height and depth.
+   *
+   *
+   * Also, convert the offsets and extent from units of texels to units of
+   * blocks - which is the highest resolution accessible in this command.
+   */
   const VkOffset3D img_offset_el =
  meta_region_offset_el(image, [r].imageOffset);
   const VkExtent3D bufferExte

Mesa (vulkan): anv/device: Up device limits for 3D and array texture dimensions

2016-03-07 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 181b142fbd176f24a73cabf209000a9187f275e8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=181b142fbd176f24a73cabf209000a9187f275e8

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Sat Mar  5 15:17:00 2016 -0800

anv/device: Up device limits for 3D and array texture dimensions

The limit for these textures is 2048 not 1024.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com>

---

 src/intel/vulkan/anv_device.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 816f780..44eb0ed 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -421,9 +421,9 @@ void anv_GetPhysicalDeviceProperties(
VkPhysicalDeviceLimits limits = {
   .maxImageDimension1D  = (1 << 14),
   .maxImageDimension2D  = (1 << 14),
-  .maxImageDimension3D  = (1 << 10),
+  .maxImageDimension3D  = (1 << 11),
   .maxImageDimensionCube= (1 << 14),
-  .maxImageArrayLayers  = (1 << 10),
+  .maxImageArrayLayers  = (1 << 11),
   .maxTexelBufferElements   = 128 * 1024 * 1024,
   .maxUniformBufferRange= UINT32_MAX,
   .maxStorageBufferRange= UINT32_MAX,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): isl: Get rid of isl_surf_fill_state_info::level0_extent_px

2016-03-04 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: b80c8ebc4587a15c823b5223419eadb0ca51cdd1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b80c8ebc4587a15c823b5223419eadb0ca51cdd1

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Mar  3 15:40:13 2016 -0800

isl: Get rid of isl_surf_fill_state_info::level0_extent_px

This field is no longer needed.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/isl/isl.h   |  9 -
 src/intel/isl/isl_surface_state.c |  8 
 src/intel/vulkan/anv_image.c  | 33 +++--
 3 files changed, 7 insertions(+), 43 deletions(-)

diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h
index 5a48bce..248a94d 100644
--- a/src/intel/isl/isl.h
+++ b/src/intel/isl/isl.h
@@ -773,15 +773,6 @@ struct isl_surf_fill_state_info {
uint32_t mocs;
 
/**
-* This allows the caller to over-ride the dimensions of the surface.
-* This is used at the moment for compressed surfaces to let us hack
-* around the fact that we can't actually render to them.
-*
-* FIXME: We really need to get rid of this.  It's a lie.
-*/
-   struct isl_extent4d level0_extent_px;
-
-   /**
 * The clear color for this surface
 *
 * Valid values depend on hardware generation.
diff --git a/src/intel/isl/isl_surface_state.c 
b/src/intel/isl/isl_surface_state.c
index 1607aa6..fe8f07c 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -257,8 +257,8 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, 
void *state,
   .SurfaceQPitch = get_qpitch(info->surf) >> 2,
 #endif
 
-  .Width = info->level0_extent_px.width - 1,
-  .Height = info->level0_extent_px.height - 1,
+  .Width = info->surf->logical_level0_px.width - 1,
+  .Height = info->surf->logical_level0_px.height - 1,
   .Depth = 0, /* TEMPLATE */
 
   .SurfacePitch = info->surf->row_pitch - 1,
@@ -338,7 +338,7 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, 
void *state,
*If the volume texture is MIP-mapped, this field specifies the
*depth of the base MIP level.
*/
-  s.Depth = info->level0_extent_px.depth - 1;
+  s.Depth = info->surf->logical_level0_px.depth - 1;
 
   /* From the Broadwell PRM >> 
RENDER_SURFACE_STATE::RenderTargetViewExtent:
*
@@ -346,7 +346,7 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, 
void *state,
*indicates the extent of the accessible 'R' coordinates minus 1 on
*the LOD currently being rendered to.
*/
-  s.RenderTargetViewExtent = info->level0_extent_px.depth - 1;
+  s.RenderTargetViewExtent = info->surf->logical_level0_px.depth - 1;
   break;
default:
   unreachable(!"bad SurfaceType");
diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index dc1ea9c..c76a5f6 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -540,30 +540,6 @@ anv_image_view_init(struct anv_image_view *iview,
   },
};
 
-   struct isl_extent4d level0_extent_px;
-
-   if (!isl_format_is_compressed(format) &&
-   isl_format_is_compressed(image->format->isl_format)) {
-  /* Scale the ImageView extent by the backing Image. This is used
-   * internally when an uncompressed ImageView is created on a
-   * compressed Image. The ImageView can therefore be used for copying
-   * data from a source Image to a destination Image.
-   */
-  const struct isl_format_layout * isl_layout = image->format->isl_layout;
-
-  level0_extent_px.depth  = anv_minify(image->extent.depth, 
range->baseMipLevel);
-  level0_extent_px.depth  = DIV_ROUND_UP(level0_extent_px.depth, 
isl_layout->bd);
-
-  level0_extent_px.height = 
isl_surf_get_array_pitch_el_rows(>isl) * image->array_size;
-  level0_extent_px.width  = isl_surf_get_row_pitch_el(>isl);
-  isl_view.base_level = 0;
-  isl_view.base_array_layer = 0;
-   } else {
-  level0_extent_px.width  = image->extent.width;
-  level0_extent_px.height = image->extent.height;
-  level0_extent_px.depth  = image->extent.depth;
-   }
-
iview->extent = (VkExtent3D) {
   .width  = anv_minify(image->extent.width , range->baseMipLevel),
   .height = anv_minify(image->extent.height, range->baseMipLevel),
@@ -586,8 +562,7 @@ anv_image_view_init(struct anv_image_view *iview,
   iview->sampler_surface_state.map,
   .surf = >isl,
   .view = _view,
-  .mocs = device->default_mocs,
-  .level0_extent_px = level0_extent_px);
+  .mocs = device->default_mocs);
 
  

Mesa (vulkan): isl: Fix RenderTargetViewExtent for mipmapped 3D surfaces

2016-03-04 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: a6fb62a86441ce7296f9d06cf7a71d2f51f3a3f5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a6fb62a86441ce7296f9d06cf7a71d2f51f3a3f5

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Mar  3 15:49:13 2016 -0800

isl: Fix RenderTargetViewExtent for mipmapped 3D surfaces

Match the comment stated above the assignment.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/isl/isl_surface_state.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/intel/isl/isl_surface_state.c 
b/src/intel/isl/isl_surface_state.c
index fe8f07c..f3390a6 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -346,7 +346,8 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, 
void *state,
*indicates the extent of the accessible 'R' coordinates minus 1 on
*the LOD currently being rendered to.
*/
-  s.RenderTargetViewExtent = info->surf->logical_level0_px.depth - 1;
+  s.RenderTargetViewExtent = 
isl_minify(info->surf->logical_level0_px.depth,
+info->view->base_level) - 1;
   break;
default:
   unreachable(!"bad SurfaceType");

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Use blitter API for copies between Images and Buffers

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 9b6c95d46ee19224e8013a0fbc991f8b2135017d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9b6c95d46ee19224e8013a0fbc991f8b2135017d

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Sat Feb 27 17:11:55 2016 -0800

anv/meta: Use blitter API for copies between Images and Buffers

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 214 ++-
 1 file changed, 6 insertions(+), 208 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 8cda3d5..8ca1871 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -1189,121 +1189,10 @@ void anv_CmdCopyBufferToImage(
 {
ANV_FROM_HANDLE(anv_cmd_buffer, cmd_buffer, commandBuffer);
ANV_FROM_HANDLE(anv_image, dest_image, destImage);
-   VkDevice vk_device = anv_device_to_handle(cmd_buffer->device);
-   struct anv_meta_saved_state saved_state;
-
-   /* The Vulkan 1.0 spec says "dstImage must have a sample count equal to
-* VK_SAMPLE_COUNT_1_BIT."
-*/
-   assert(dest_image->samples == 1);
-
-   meta_prepare_blit(cmd_buffer, _state);
-
-   for (unsigned r = 0; r < regionCount; r++) {
-  VkImageAspectFlags aspect = pRegions[r].imageSubresource.aspectMask;
-
-  VkFormat image_format = choose_iview_format(dest_image, aspect);
-
-  struct anv_image *src_image =
- make_image_for_buffer(vk_device, srcBuffer, dest_image->vk_format,
-   VK_IMAGE_USAGE_SAMPLED_BIT,
-   dest_image->type, _buffer->pool->alloc,
-   [r]);
-
-  const uint32_t dest_base_array_slice =
- anv_meta_get_iview_layer(dest_image, [r].imageSubresource,
-  [r].imageOffset);
-
-  unsigned num_slices_3d = pRegions[r].imageExtent.depth;
-  unsigned num_slices_array = pRegions[r].imageSubresource.layerCount;
-  unsigned slice_3d = 0;
-  unsigned slice_array = 0;
-  while (slice_3d < num_slices_3d && slice_array < num_slices_array) {
- struct anv_image_view src_iview;
- anv_image_view_init(_iview, cmd_buffer->device,
-&(VkImageViewCreateInfo) {
-   .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
-   .image = anv_image_to_handle(src_image),
-   .viewType = VK_IMAGE_VIEW_TYPE_2D,
-   .format = src_image->vk_format,
-   .subresourceRange = {
-  .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
-  .baseMipLevel = 0,
-  .levelCount = 1,
-  .baseArrayLayer = 0,
-  .layerCount = 1,
-   },
-},
-cmd_buffer, 0, VK_IMAGE_USAGE_SAMPLED_BIT);
-
- uint32_t img_x = 0;
- uint32_t img_y = 0;
- uint32_t img_o = 0;
- if (isl_format_is_compressed(dest_image->format->isl_format))
-
isl_surf_get_image_intratile_offset_el(_buffer->device->isl_dev,
-   
_image->color_surface.isl,
-   
pRegions[r].imageSubresource.mipLevel,
-   
pRegions[r].imageSubresource.baseArrayLayer + slice_array,
-   pRegions[r].imageOffset.z + 
slice_3d,
-   _o, _x, _y);
-
- VkOffset3D dest_offset_el = meta_region_offset_el(dest_image, & 
pRegions[r].imageOffset);
- dest_offset_el.x += img_x;
- dest_offset_el.y += img_y;
- dest_offset_el.z = 0;
-
- struct anv_image_view dest_iview;
- anv_image_view_init(_iview, cmd_buffer->device,
-&(VkImageViewCreateInfo) {
-   .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
-   .image = anv_image_to_handle(dest_image),
-   .viewType = anv_meta_get_view_type(dest_image),
-   .format = image_format,
-   .subresourceRange = {
-  .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
-  .baseMipLevel = pRegions[r].imageSubresource.mipLevel,
-  .levelCount = 1,
-  .baseArrayLayer = dest_base_array_slice +
-slice_array + slice_3d,
-  .layerCount = 1
-   },
-},
-cmd_buffer, img_o, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
-
- const VkExtent3D img_extent_el = 
meta_region_extent_el(dest_image->vk_format,
-  
[r].imageExtent);
-
- meta_emit_blit(cmd_buffer,
-src_image,
-

Mesa (vulkan): anv/meta: Implement the blitter API functions

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 2e9b08b9b89c0cf10cc7ca73fd39380766943283
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2e9b08b9b89c0cf10cc7ca73fd39380766943283

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Sat Feb 27 12:26:21 2016 -0800

anv/meta: Implement the blitter API functions

Most of the code in anv_meta_blit2d() is borrowed from do_buffer_copy().

Create an image and image view for each rectangle.
Note: For tiled RGB images, ISL will align the image's row_pitch up to
the nearest tile width.

v2 (Jason):
Keep pitch in units of bytes
Make src_format and dst_format variables
s/dest/dst/ in every usage
v3: Fix dst_image width

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta.h  |   6 +-
 src/intel/vulkan/anv_meta_blit.c | 142 +++
 2 files changed, 145 insertions(+), 3 deletions(-)

diff --git a/src/intel/vulkan/anv_meta.h b/src/intel/vulkan/anv_meta.h
index 9521764..587c044 100644
--- a/src/intel/vulkan/anv_meta.h
+++ b/src/intel/vulkan/anv_meta.h
@@ -90,18 +90,18 @@ struct anv_meta_blit2d_rect {
uint32_t width, height;
 };
 
-static void
+void
 anv_meta_begin_blit2d(struct anv_cmd_buffer *cmd_buffer,
   struct anv_meta_saved_state *save);
 
-static void
+void
 anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
 struct anv_meta_blit2d_surf *src,
 struct anv_meta_blit2d_surf *dst,
 unsigned num_rects,
 struct anv_meta_blit2d_rect *rects);
 
-static void
+void
 anv_meta_end_blit2d(struct anv_cmd_buffer *cmd_buffer,
 struct anv_meta_saved_state *save);
 
diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 478b199..bef6675 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -119,6 +119,14 @@ meta_prepare_blit(struct anv_cmd_buffer *cmd_buffer,
  (1 << VK_DYNAMIC_STATE_VIEWPORT));
 }
 
+void
+anv_meta_begin_blit2d(struct anv_cmd_buffer *cmd_buffer,
+  struct anv_meta_saved_state *save)
+{
+   meta_prepare_blit(cmd_buffer, save);
+}
+
+
 /* Returns the user-provided VkBufferImageCopy::imageOffset in units of
  * elements rather than texels. One element equals one texel or one block
  * if Image is uncompressed or compressed, respectively.
@@ -372,6 +380,13 @@ meta_finish_blit(struct anv_cmd_buffer *cmd_buffer,
anv_meta_restore(saved_state, cmd_buffer);
 }
 
+void
+anv_meta_end_blit2d(struct anv_cmd_buffer *cmd_buffer,
+struct anv_meta_saved_state *save)
+{
+   meta_finish_blit(cmd_buffer, save);
+}
+
 static VkFormat
 vk_format_for_size(int bs)
 {
@@ -402,6 +417,133 @@ vk_format_for_size(int bs)
}
 }
 
+void
+anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
+struct anv_meta_blit2d_surf *src,
+struct anv_meta_blit2d_surf *dst,
+unsigned num_rects,
+struct anv_meta_blit2d_rect *rects)
+{
+   VkDevice vk_device = anv_device_to_handle(cmd_buffer->device);
+   VkFormat src_format = vk_format_for_size(src->bs);
+   VkFormat dst_format = vk_format_for_size(dst->bs);
+
+   for (unsigned r = 0; r < num_rects; ++r) {
+
+  /* Create VkImages */
+  VkImageCreateInfo image_info = {
+ .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
+ .imageType = VK_IMAGE_TYPE_2D,
+ .format = 0, /* TEMPLATE */
+ .extent = {
+.width = 0, /* TEMPLATE */
+/* Pad to highest tile height to compensate for a vertical 
intratile offset */
+.height = MIN(rects[r].height + 64, 1 << 14),
+.depth = 1,
+ },
+ .mipLevels = 1,
+ .arrayLayers = 1,
+ .samples = 1,
+ .tiling = 0, /* TEMPLATE */
+ .usage = 0, /* TEMPLATE */
+  };
+  struct anv_image_create_info anv_image_info = {
+ .vk_info = _info,
+ .isl_tiling_flags = 0, /* TEMPLATE */
+  };
+
+  anv_image_info.isl_tiling_flags = 1 << src->tiling;
+  image_info.tiling = anv_image_info.isl_tiling_flags == 
ISL_TILING_LINEAR_BIT ?
+VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL;
+  image_info.usage = VK_IMAGE_USAGE_SAMPLED_BIT;
+  image_info.format = src_format,
+  image_info.extent.width = src->pitch / src->bs;
+  VkImage src_image;
+  anv_image_create(vk_device, _image_info,
+ _buffer->pool->alloc, _image);
+
+  anv_image_info.isl_tiling_flags = 1 << dst->tiling;
+  image_info.tiling = anv_image_info.isl_tiling_flags == 
ISL_TILING_LINEAR_BIT ?
+VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL;
+  image_info.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+  image_info.format = dst_forma

Mesa (vulkan): anv/image: Create a linear image when requested

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 1d9d90d9a6323c37e80b7870946597b470d8dec0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d9d90d9a6323c37e80b7870946597b470d8dec0

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Mar  2 09:44:48 2016 -0800

anv/image: Create a linear image when requested

If a linear image is requested, the only possible result should be a
linearly-tiled surface.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_image.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index 46cf241..dc1ea9c 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -120,7 +120,7 @@ make_surface(const struct anv_device *dev,
 
isl_tiling_flags_t tiling_flags = anv_info->isl_tiling_flags;
if (vk_info->tiling == VK_IMAGE_TILING_LINEAR)
-  tiling_flags &= ISL_TILING_LINEAR_BIT;
+  tiling_flags = ISL_TILING_LINEAR_BIT;
 
struct anv_surface *anv_surf = get_surface(image, aspect);
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Add function to create anv_meta_blit2d_surf from anv_image

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 61ad78d0d1ffafc89cdc9da9d5ae710be36e3089
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=61ad78d0d1ffafc89cdc9da9d5ae710be36e3089

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue Mar  1 23:15:35 2016 -0800

anv/meta: Add function to create anv_meta_blit2d_surf from anv_image

v2: Keep pitch in units of bytes (Jason)

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 13 +
 1 file changed, 13 insertions(+)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index bef6675..044998d 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -417,6 +417,19 @@ vk_format_for_size(int bs)
}
 }
 
+static struct anv_meta_blit2d_surf
+blit_surf_for_image(const struct anv_image* image,
+const struct isl_surf *img_isl_surf)
+{
+   return (struct anv_meta_blit2d_surf) {
+.bo = image->bo,
+.tiling = img_isl_surf->tiling,
+.base_offset = image->offset,
+.bs = isl_format_get_layout(img_isl_surf->format)->bs,
+.pitch = isl_surf_get_row_pitch(img_isl_surf),
+   };
+}
+
 void
 anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
 struct anv_meta_blit2d_surf *src,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Remove redundancies in do_buffer_copy()

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: d1e48b994565c1d6c1cfa546ba7ab09145c12601
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d1e48b994565c1d6c1cfa546ba7ab09145c12601

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Sat Feb 27 13:29:04 2016 -0800

anv/meta: Remove redundancies in do_buffer_copy()

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 46 
 1 file changed, 18 insertions(+), 28 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 9d41add..478b199 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -446,39 +446,29 @@ do_buffer_copy(struct anv_cmd_buffer *cmd_buffer,
anv_image_from_handle(dest_image)->bo = dest;
anv_image_from_handle(dest_image)->offset = dest_offset;
 
+   VkImageViewCreateInfo iview_info = {
+  .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
+  .image = 0, /* TEMPLATE */
+  .viewType = VK_IMAGE_VIEW_TYPE_2D,
+  .format = copy_format,
+  .subresourceRange = {
+ .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+ .baseMipLevel = 0,
+ .levelCount = 1,
+ .baseArrayLayer = 0,
+ .layerCount = 1
+  },
+   };
+
struct anv_image_view src_iview;
+   iview_info.image = src_image;
anv_image_view_init(_iview, cmd_buffer->device,
-  &(VkImageViewCreateInfo) {
- .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
- .image = src_image,
- .viewType = VK_IMAGE_VIEW_TYPE_2D,
- .format = copy_format,
- .subresourceRange = {
-.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
-.baseMipLevel = 0,
-.levelCount = 1,
-.baseArrayLayer = 0,
-.layerCount = 1
- },
-  },
-  cmd_buffer, 0, VK_IMAGE_USAGE_SAMPLED_BIT);
+  _info, cmd_buffer, 0, VK_IMAGE_USAGE_SAMPLED_BIT);
 
struct anv_image_view dest_iview;
+   iview_info.image = dest_image;
anv_image_view_init(_iview, cmd_buffer->device,
-  &(VkImageViewCreateInfo) {
- .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
- .image = dest_image,
- .viewType = VK_IMAGE_VIEW_TYPE_2D,
- .format = copy_format,
- .subresourceRange = {
-.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
-.baseMipLevel = 0,
-.levelCount = 1,
-.baseArrayLayer = 0,
-.layerCount = 1,
- },
-  },
-  cmd_buffer, 0, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
+  _info, cmd_buffer, 0, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
 
meta_emit_blit(cmd_buffer,
   anv_image_from_handle(src_image),

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Add missing command to exit meta in anv_CmdUpdateBuffer()

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: d50ff250ec25e4903ef9e82c47981aaed962e464
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d50ff250ec25e4903ef9e82c47981aaed962e464

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Mar  2 14:27:17 2016 -0800

anv/meta: Add missing command to exit meta in anv_CmdUpdateBuffer()

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 96a3b76..216a0bf 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -625,6 +625,8 @@ void anv_CmdUpdateBuffer(
   dstOffset += copy_size;
   pData = (void *)pData + copy_size;
}
+
+   meta_finish_blit(cmd_buffer, _state);
 }
 
 static VkFormat

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): isl: Add function to get intratile offsets from x/y offsets

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 456f5b0314747c5e47435a6d9d708ef7895c7a49
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=456f5b0314747c5e47435a6d9d708ef7895c7a49

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Fri Feb 26 14:49:51 2016 -0800

isl: Add function to get intratile offsets from x/y offsets

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/isl/isl.c | 43 +++
 src/intel/isl/isl.h | 12 
 2 files changed, 43 insertions(+), 12 deletions(-)

diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
index f7b4c70..7fd9eea 100644
--- a/src/intel/isl/isl.c
+++ b/src/intel/isl/isl.c
@@ -1414,11 +1414,10 @@ isl_surf_get_image_offset_el(const struct isl_surf 
*surf,
 }
 
 void
-isl_surf_get_image_intratile_offset_el(const struct isl_device *dev,
+isl_surf_get_image_intratile_offset_el_xy(const struct isl_device *dev,
const struct isl_surf *surf,
-   uint32_t level,
-   uint32_t logical_array_layer,
-   uint32_t logical_z_offset,
+   uint32_t total_x_offset_el,
+   uint32_t total_y_offset_el,
uint32_t *base_address_offset,
uint32_t *x_offset_el,
uint32_t *y_offset_el)
@@ -1428,14 +1427,6 @@ isl_surf_get_image_intratile_offset_el(const struct 
isl_device *dev,
struct isl_tile_info tile_info;
isl_surf_get_tile_info(dev, surf, _info);
 
-   uint32_t total_x_offset_el;
-   uint32_t total_y_offset_el;
-   isl_surf_get_image_offset_el(surf, level,
-logical_array_layer,
-logical_z_offset,
-_x_offset_el,
-_y_offset_el);
-
uint32_t small_y_offset_el = total_y_offset_el % tile_info.height;
uint32_t big_y_offset_el = total_y_offset_el - small_y_offset_el;
uint32_t big_y_offset_B = big_y_offset_el * surf->row_pitch;
@@ -1448,6 +1439,34 @@ isl_surf_get_image_intratile_offset_el(const struct 
isl_device *dev,
*base_address_offset = big_y_offset_B + big_x_offset_B;
*x_offset_el = small_x_offset_el;
*y_offset_el = small_y_offset_el;
+
+
+}
+
+void
+isl_surf_get_image_intratile_offset_el(const struct isl_device *dev,
+   const struct isl_surf *surf,
+   uint32_t level,
+   uint32_t logical_array_layer,
+   uint32_t logical_z_offset,
+   uint32_t *base_address_offset,
+   uint32_t *x_offset_el,
+   uint32_t *y_offset_el)
+{
+   uint32_t total_x_offset_el;
+   uint32_t total_y_offset_el;
+   isl_surf_get_image_offset_el(surf, level,
+logical_array_layer,
+logical_z_offset,
+_x_offset_el,
+_y_offset_el);
+
+   isl_surf_get_image_intratile_offset_el_xy(dev, surf,
+total_x_offset_el,
+total_y_offset_el,
+base_address_offset,
+x_offset_el,
+y_offset_el);
 }
 
 uint32_t
diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h
index 7456975..5a48bce 100644
--- a/src/intel/isl/isl.h
+++ b/src/intel/isl/isl.h
@@ -1162,6 +1162,18 @@ isl_surf_get_image_intratile_offset_el(const struct 
isl_device *dev,
uint32_t *y_offset_el);
 
 /**
+ * See above.
+ */
+void
+isl_surf_get_image_intratile_offset_el_xy(const struct isl_device *dev,
+   const struct isl_surf *surf,
+   uint32_t total_x_offset_el,
+   uint32_t total_y_offset_el,
+   uint32_t *base_address_offset,
+   uint32_t *x_offset_el,
+   uint32_t *y_offset_el);
+
+/**
  * @brief Get value of 3DSTATE_DEPTH_BUFFER.SurfaceFormat
  *
  * @pre surf->usage has ISL_SURF_USAGE_DEPTH_BIT

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): isl: Don' t filter tiling flags if a specific tiling bit is set

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 091f1da902c71ac8d3d27b325a118e2f683f1ae5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=091f1da902c71ac8d3d27b325a118e2f683f1ae5

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Tue Mar  1 17:32:14 2016 -0800

isl: Don't filter tiling flags if a specific tiling bit is set

If a specific bit is set, the intention to create a surface with a
specific tiling format should be respected.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/isl/isl.c | 13 -
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
index 7fd9eea..a366380 100644
--- a/src/intel/isl/isl.c
+++ b/src/intel/isl/isl.c
@@ -184,11 +184,14 @@ isl_surf_choose_tiling(const struct isl_device *dev,
 {
isl_tiling_flags_t tiling_flags = info->tiling_flags;
 
-   if (ISL_DEV_GEN(dev) >= 7) {
-  gen7_filter_tiling(dev, info, _flags);
-   } else {
-  isl_finishme("%s: gen%u", __func__, ISL_DEV_GEN(dev));
-  gen7_filter_tiling(dev, info, _flags);
+   /* Filter if multiple tiling options are given */
+   if (!isl_is_pow2(tiling_flags)) {
+  if (ISL_DEV_GEN(dev) >= 7) {
+ gen7_filter_tiling(dev, info, _flags);
+  } else {
+ isl_finishme("%s: gen%u", __func__, ISL_DEV_GEN(dev));
+ gen7_filter_tiling(dev, info, _flags);
+  }
}
 
#define CHOOSE(__tiling) \

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Use blitter API in do_buffer_copy()

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 318b67d1578213b802443f06f767a1c9d6d00310
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=318b67d1578213b802443f06f767a1c9d6d00310

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Sat Feb 27 17:11:55 2016 -0800

anv/meta: Use blitter API in do_buffer_copy()

v2: Keep pitch in units of bytes (Jason)

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 94 +---
 1 file changed, 21 insertions(+), 73 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 2e529ee..bd1c979 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -563,81 +563,29 @@ do_buffer_copy(struct anv_cmd_buffer *cmd_buffer,
struct anv_bo *dest, uint64_t dest_offset,
int width, int height, int bs)
 {
-   VkDevice vk_device = anv_device_to_handle(cmd_buffer->device);
-   VkFormat copy_format = vk_format_for_size(bs);
-
-   VkImageCreateInfo image_info = {
-  .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
-  .imageType = VK_IMAGE_TYPE_2D,
-  .format = copy_format,
-  .extent = {
- .width = width,
- .height = height,
- .depth = 1,
-  },
-  .mipLevels = 1,
-  .arrayLayers = 1,
-  .samples = 1,
-  .tiling = VK_IMAGE_TILING_LINEAR,
-  .usage = 0,
-  .flags = 0,
+   struct anv_meta_blit2d_surf b_src = {
+.bo = src,
+.tiling = ISL_TILING_LINEAR,
+.base_offset = src_offset,
+.bs = bs,
+.pitch = width * bs,
};
-
-   VkImage src_image;
-   image_info.usage = VK_IMAGE_USAGE_SAMPLED_BIT;
-   anv_CreateImage(vk_device, _info,
-   _buffer->pool->alloc, _image);
-
-   VkImage dest_image;
-   image_info.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
-   anv_CreateImage(vk_device, _info,
-   _buffer->pool->alloc, _image);
-
-   /* We could use a vk call to bind memory, but that would require
-* creating a dummy memory object etc. so there's really no point.
-*/
-   anv_image_from_handle(src_image)->bo = src;
-   anv_image_from_handle(src_image)->offset = src_offset;
-   anv_image_from_handle(dest_image)->bo = dest;
-   anv_image_from_handle(dest_image)->offset = dest_offset;
-
-   VkImageViewCreateInfo iview_info = {
-  .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
-  .image = 0, /* TEMPLATE */
-  .viewType = VK_IMAGE_VIEW_TYPE_2D,
-  .format = copy_format,
-  .subresourceRange = {
- .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
- .baseMipLevel = 0,
- .levelCount = 1,
- .baseArrayLayer = 0,
- .layerCount = 1
-  },
+   struct anv_meta_blit2d_surf b_dst = {
+.bo = dest,
+.tiling = ISL_TILING_LINEAR,
+.base_offset = dest_offset,
+.bs = bs,
+.pitch = width * bs,
};
-
-   struct anv_image_view src_iview;
-   iview_info.image = src_image;
-   anv_image_view_init(_iview, cmd_buffer->device,
-  _info, cmd_buffer, 0, VK_IMAGE_USAGE_SAMPLED_BIT);
-
-   struct anv_image_view dest_iview;
-   iview_info.image = dest_image;
-   anv_image_view_init(_iview, cmd_buffer->device,
-  _info, cmd_buffer, 0, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
-
-   meta_emit_blit(cmd_buffer,
-  anv_image_from_handle(src_image),
-  _iview,
-  (VkOffset3D) { 0, 0, 0 },
-  (VkExtent3D) { width, height, 1 },
-  anv_image_from_handle(dest_image),
-  _iview,
-  (VkOffset3D) { 0, 0, 0 },
-  (VkExtent3D) { width, height, 1 },
-  VK_FILTER_NEAREST);
-
-   anv_DestroyImage(vk_device, src_image, _buffer->pool->alloc);
-   anv_DestroyImage(vk_device, dest_image, _buffer->pool->alloc);
+   struct anv_meta_blit2d_rect rect = {
+  .width = width,
+  .height = height,
+   };
+   anv_meta_blit2d(cmd_buffer,
+  _src,
+  _dst,
+  1,
+  );
 }
 
 void anv_CmdCopyBuffer(

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Modify blitter API fields

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 032bf172b48211af8fc892747dc4600fb6595f99
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=032bf172b48211af8fc892747dc4600fb6595f99

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Thu Feb 25 15:21:12 2016 -0800

anv/meta: Modify blitter API fields

Some fields are unnecessary. The variables "pitch" and "bs" are used
for consistency with ISL.

v2: Keep pitch in units of bytes (Jason)

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta.h | 23 +--
 1 file changed, 5 insertions(+), 18 deletions(-)

diff --git a/src/intel/vulkan/anv_meta.h b/src/intel/vulkan/anv_meta.h
index f5dac12..9521764 100644
--- a/src/intel/vulkan/anv_meta.h
+++ b/src/intel/vulkan/anv_meta.h
@@ -77,24 +77,11 @@ struct anv_meta_blit2d_surf {
/** Base offset to the start of the image */
uint64_t base_offset;
 
-   uint32_t offset_x;
-   uint32_t offset_y;
-
-   /** The size of a unit in bytes. (Usually texel size) */
-   uint8_t units;
-
-   /** Stride between rows in bytes. */
-   uint32_t stride;
-
-   /** Possible vertical stride in rows.
-*
-* This is a hint to the blit engine that tells it that it can, if it
-* wants, split the surface into v_stride tall chunks.  The user makes
-* the guarantee that no rectangles it passes in will every cross a
-* v_stride boundary.  A v_stride value of 0 indicates that the user
-* cannot make such a guarantee.
-*/
-   uint32_t v_stride;
+   /** The size of an element in bytes. */
+   uint8_t bs;
+
+   /** Pitch between rows in bytes. */
+   uint32_t pitch;
 };
 
 struct anv_meta_blit2d_rect {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Add function which copies between Buffers and Images

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 91640c34c6b474903fa5634f86f87c774d16db88
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=91640c34c6b474903fa5634f86f87c774d16db88

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Feb 29 14:28:25 2016 -0800

anv/meta: Add function which copies between Buffers and Images

v2: Keep pitch in units of bytes (Jason)

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 92 
 1 file changed, 92 insertions(+)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 044998d..8cda3d5 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -1040,6 +1040,98 @@ void anv_CmdBlitImage(
meta_finish_blit(cmd_buffer, _state);
 }
 
+static void
+meta_copy_buffer_to_image(struct anv_cmd_buffer *cmd_buffer,
+  struct anv_buffer* buffer,
+  struct anv_image* image,
+  uint32_t regionCount,
+  const VkBufferImageCopy* pRegions,
+  bool forward)
+{
+   struct anv_meta_saved_state saved_state;
+
+   /* The Vulkan 1.0 spec says "dstImage must have a sample count equal to
+* VK_SAMPLE_COUNT_1_BIT."
+*/
+   assert(image->samples == 1);
+
+   anv_meta_begin_blit2d(cmd_buffer, _state);
+
+   for (unsigned r = 0; r < regionCount; r++) {
+
+  /* Start creating blit rect */
+  const VkOffset3D img_offset_el = meta_region_offset_el(image, 
[r].imageOffset);
+  const VkExtent3D bufferExtent = {
+ .width = pRegions[r].bufferRowLength,
+ .height = pRegions[r].bufferImageHeight,
+  };
+  const VkExtent3D buf_extent_el = meta_region_extent_el(image->vk_format, 
);
+  const VkExtent3D img_extent_el = meta_region_extent_el(image->vk_format,
+   
[r].imageExtent);
+  struct anv_meta_blit2d_rect rect = {
+ .width = MAX2(buf_extent_el.width, img_extent_el.width),
+ .height = MAX2(buf_extent_el.height, img_extent_el.height),
+  };
+
+  /* Create blit surfaces */
+  VkImageAspectFlags aspect = pRegions[r].imageSubresource.aspectMask;
+  const struct isl_surf *img_isl_surf =
+ _image_get_surface_for_aspect_mask(image, aspect)->isl;
+  struct anv_meta_blit2d_surf img_bsurf = blit_surf_for_image(image, 
img_isl_surf);
+  struct anv_meta_blit2d_surf buf_bsurf = {
+ .bo = buffer->bo,
+ .tiling = ISL_TILING_LINEAR,
+ .base_offset = buffer->offset + pRegions[r].bufferOffset,
+ .bs = forward ? image->format->isl_layout->bs : img_bsurf.bs,
+ .pitch = rect.width * buf_bsurf.bs,
+  };
+
+  /* Set direction-dependent variables */
+  struct anv_meta_blit2d_surf *dst_bsurf = forward ? _bsurf : 
_bsurf;
+  struct anv_meta_blit2d_surf *src_bsurf = forward ? _bsurf : 
_bsurf;
+  uint32_t *x_offset = forward ? _x : _x;
+  uint32_t *y_offset = forward ? _y : _y;
+
+  /* Loop through each 3D or array slice */
+  unsigned num_slices_3d = pRegions[r].imageExtent.depth;
+  unsigned num_slices_array = pRegions[r].imageSubresource.layerCount;
+  unsigned slice_3d = 0;
+  unsigned slice_array = 0;
+  while (slice_3d < num_slices_3d && slice_array < num_slices_array) {
+
+ /* Finish creating blit rect */
+ isl_surf_get_image_offset_el(img_isl_surf,
+pRegions[r].imageSubresource.mipLevel,
+
pRegions[r].imageSubresource.baseArrayLayer + slice_array,
+pRegions[r].imageOffset.z + slice_3d,
+x_offset,
+y_offset);
+ *x_offset += img_offset_el.x;
+ *y_offset += img_offset_el.y;
+
+ /* Perform Blit */
+ anv_meta_blit2d(cmd_buffer,
+src_bsurf,
+dst_bsurf,
+1,
+);
+
+ /* Once we've done the blit, all of the actual information about
+  * the image is embedded in the command buffer so we can just
+  * increment the offset directly in the image effectively
+  * re-binding it to different backing memory.
+  */
+ buf_bsurf.base_offset += rect.width * rect.height * buf_bsurf.bs;
+
+ if (image->type == VK_IMAGE_TYPE_3D)
+slice_3d++;
+ else
+slice_array++;
+  }
+   }
+   anv_meta_end_blit2d(cmd_buffer, _state);
+}
+
 static struct anv_image *
 make_image_for_buffer(VkDevice vk_device, VkBuffer vk_buffer, VkFormat format,
   VkImageUsageFlags usage,

_

Mesa (vulkan): anv/meta: Delete unused functions

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 8dddc3fb1e55a7cc82c0afe2c880c1ef485d21c1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8dddc3fb1e55a7cc82c0afe2c880c1ef485d21c1

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Feb 29 14:37:48 2016 -0800

anv/meta: Delete unused functions

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 93 
 1 file changed, 93 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 3fc4631..b8a42f9 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -717,52 +717,6 @@ void anv_CmdUpdateBuffer(
anv_meta_end_blit2d(cmd_buffer, _state);
 }
 
-static VkFormat
-choose_iview_format(struct anv_image *image, VkImageAspectFlagBits aspect)
-{
-   assert(__builtin_popcount(aspect) == 1);
-
-   struct isl_surf *surf =
-  _image_get_surface_for_aspect_mask(image, aspect)->isl;
-
-   /* vkCmdCopyImage behaves like memcpy. Therefore we choose identical UINT
-* formats for the source and destination image views.
-*
-* From the Vulkan spec (2015-12-30):
-*
-*vkCmdCopyImage performs image copies in a similar manner to a host
-*memcpy. It does not perform general-purpose conversions such as
-*scaling, resizing, blending, color-space conversion, or format
-*conversions.  Rather, it simply copies raw image data. vkCmdCopyImage
-*can copy between images with different formats, provided the formats
-*are compatible as defined below.
-*
-*[The spec later defines compatibility as having the same number of
-*bytes per block].
-*/
-   return vk_format_for_size(isl_format_layouts[surf->format].bs);
-}
-
-static VkFormat
-choose_buffer_format(VkFormat format, VkImageAspectFlagBits aspect)
-{
-   assert(__builtin_popcount(aspect) == 1);
-
-   /* vkCmdCopy* commands behave like memcpy. Therefore we choose
-* compatable UINT formats for the source and destination image views.
-*
-* For the buffer, we go back to the original image format and get a
-* the format as if it were linear.  This way, for RGB formats, we get
-* an RGB format here even if the tiled image is RGBA. XXX: This doesn't
-* work if the buffer is the destination.
-*/
-   enum isl_format linear_format = anv_get_isl_format(format, aspect,
-  VK_IMAGE_TILING_LINEAR,
-  NULL);
-
-   return vk_format_for_size(isl_format_layouts[linear_format].bs);
-}
-
 void anv_CmdCopyImage(
 VkCommandBuffer commandBuffer,
 VkImage srcImage,
@@ -1051,53 +1005,6 @@ meta_copy_buffer_to_image(struct anv_cmd_buffer 
*cmd_buffer,
anv_meta_end_blit2d(cmd_buffer, _state);
 }
 
-static struct anv_image *
-make_image_for_buffer(VkDevice vk_device, VkBuffer vk_buffer, VkFormat format,
-  VkImageUsageFlags usage,
-  VkImageType image_type,
-  const VkAllocationCallbacks *alloc,
-  const VkBufferImageCopy *copy)
-{
-   ANV_FROM_HANDLE(anv_buffer, buffer, vk_buffer);
-
-   VkExtent3D extent = copy->imageExtent;
-   if (copy->bufferRowLength)
-  extent.width = copy->bufferRowLength;
-   if (copy->bufferImageHeight)
-  extent.height = copy->bufferImageHeight;
-   extent.depth = 1;
-   extent = meta_region_extent_el(format, );
-
-   VkImageAspectFlags aspect = copy->imageSubresource.aspectMask;
-   VkFormat buffer_format = choose_buffer_format(format, aspect);
-
-   VkImage vk_image;
-   VkResult result = anv_CreateImage(vk_device,
-  &(VkImageCreateInfo) {
- .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
- .imageType = VK_IMAGE_TYPE_2D,
- .format = buffer_format,
- .extent = extent,
- .mipLevels = 1,
- .arrayLayers = 1,
- .samples = 1,
- .tiling = VK_IMAGE_TILING_LINEAR,
- .usage = usage,
- .flags = 0,
-  }, alloc, _image);
-   assert(result == VK_SUCCESS);
-
-   ANV_FROM_HANDLE(anv_image, image, vk_image);
-
-   /* We could use a vk call to bind memory, but that would require
-* creating a dummy memory object etc. so there's really no point.
-*/
-   image->bo = buffer->bo;
-   image->offset = buffer->offset + copy->bufferOffset;
-
-   return image;
-}
-
 void anv_CmdCopyBufferToImage(
 VkCommandBuffer commandBuffer,
 VkBuffersrcBuffer,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Add the beginnings of a blitter API

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 654f79a04512502df96d9e6ce99ac0f95516d193
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=654f79a04512502df96d9e6ce99ac0f95516d193

Author: Jason Ekstrand 
Date:   Thu Dec 31 15:37:54 2015 -0800

anv/meta: Add the beginnings of a blitter API

This API is designed to be an abstraction that sits between the VkCmdCopy
commands and the hardware.  The idea is that it is simple enough that it
*should* be implementable using the blitter but with enough extra data that
we can implement it with the 3-D pipeline efficiently.  One design
objective is to allow the user to supply enough information that we can
handle most blit operations with a single draw call even if they require
copying multiple rectangles.

---

 src/intel/vulkan/anv_meta.h | 48 +
 1 file changed, 48 insertions(+)

diff --git a/src/intel/vulkan/anv_meta.h b/src/intel/vulkan/anv_meta.h
index d33e9e6..f5dac12 100644
--- a/src/intel/vulkan/anv_meta.h
+++ b/src/intel/vulkan/anv_meta.h
@@ -70,6 +70,54 @@ anv_meta_get_iview_layer(const struct anv_image *dest_image,
  const VkImageSubresourceLayers *dest_subresource,
  const VkOffset3D *dest_offset);
 
+struct anv_meta_blit2d_surf {
+   struct anv_bo *bo;
+   enum isl_tiling tiling;
+
+   /** Base offset to the start of the image */
+   uint64_t base_offset;
+
+   uint32_t offset_x;
+   uint32_t offset_y;
+
+   /** The size of a unit in bytes. (Usually texel size) */
+   uint8_t units;
+
+   /** Stride between rows in bytes. */
+   uint32_t stride;
+
+   /** Possible vertical stride in rows.
+*
+* This is a hint to the blit engine that tells it that it can, if it
+* wants, split the surface into v_stride tall chunks.  The user makes
+* the guarantee that no rectangles it passes in will every cross a
+* v_stride boundary.  A v_stride value of 0 indicates that the user
+* cannot make such a guarantee.
+*/
+   uint32_t v_stride;
+};
+
+struct anv_meta_blit2d_rect {
+   uint32_t src_x, src_y;
+   uint32_t dst_x, dst_y;
+   uint32_t width, height;
+};
+
+static void
+anv_meta_begin_blit2d(struct anv_cmd_buffer *cmd_buffer,
+  struct anv_meta_saved_state *save);
+
+static void
+anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer,
+struct anv_meta_blit2d_surf *src,
+struct anv_meta_blit2d_surf *dst,
+unsigned num_rects,
+struct anv_meta_blit2d_rect *rects);
+
+static void
+anv_meta_end_blit2d(struct anv_cmd_buffer *cmd_buffer,
+struct anv_meta_saved_state *save);
+
 #ifdef __cplusplus
 }
 #endif

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Replace copy_format w/ block size in do_buffer_copy()

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: cfe70367503ffb49a850a17e03f4c7e4138af4f1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cfe70367503ffb49a850a17e03f4c7e4138af4f1

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Sat Feb 27 14:25:00 2016 -0800

anv/meta: Replace copy_format w/ block size in do_buffer_copy()

This is a preparatory commit that will simplify the future usage of
this function.

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 17 ++---
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 216a0bf..9d41add 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -406,9 +406,10 @@ static void
 do_buffer_copy(struct anv_cmd_buffer *cmd_buffer,
struct anv_bo *src, uint64_t src_offset,
struct anv_bo *dest, uint64_t dest_offset,
-   int width, int height, VkFormat copy_format)
+   int width, int height, int bs)
 {
VkDevice vk_device = anv_device_to_handle(cmd_buffer->device);
+   VkFormat copy_format = vk_format_for_size(bs);
 
VkImageCreateInfo image_info = {
   .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
@@ -534,8 +535,6 @@ void anv_CmdCopyBuffer(
  bs = MIN2(bs, 1 << fs);
   assert(pRegions[r].size % bs == 0);
 
-  VkFormat copy_format = vk_format_for_size(bs);
-
   /* This is maximum possible width/height our HW can handle */
   uint64_t max_surface_dim = 1 << 14;
 
@@ -544,7 +543,7 @@ void anv_CmdCopyBuffer(
   while (copy_size >= max_copy_size) {
  do_buffer_copy(cmd_buffer, src_buffer->bo, src_offset,
 dest_buffer->bo, dest_offset,
-max_surface_dim, max_surface_dim, copy_format);
+max_surface_dim, max_surface_dim, bs);
  copy_size -= max_copy_size;
  src_offset += max_copy_size;
  dest_offset += max_copy_size;
@@ -556,7 +555,7 @@ void anv_CmdCopyBuffer(
  uint64_t rect_copy_size = height * max_surface_dim * bs;
  do_buffer_copy(cmd_buffer, src_buffer->bo, src_offset,
 dest_buffer->bo, dest_offset,
-max_surface_dim, height, copy_format);
+max_surface_dim, height, bs);
  copy_size -= rect_copy_size;
  src_offset += rect_copy_size;
  dest_offset += rect_copy_size;
@@ -565,7 +564,7 @@ void anv_CmdCopyBuffer(
   if (copy_size != 0) {
  do_buffer_copy(cmd_buffer, src_buffer->bo, src_offset,
 dest_buffer->bo, dest_offset,
-copy_size / bs, 1, copy_format);
+copy_size / bs, 1, bs);
   }
}
 
@@ -601,17 +600,13 @@ void anv_CmdUpdateBuffer(
 
   memcpy(tmp_data.map, pData, copy_size);
 
-  VkFormat format;
   int bs;
   if ((copy_size & 15) == 0 && (dstOffset & 15) == 0) {
- format = VK_FORMAT_R32G32B32A32_UINT;
  bs = 16;
   } else if ((copy_size & 7) == 0 && (dstOffset & 7) == 0) {
- format = VK_FORMAT_R32G32_UINT;
  bs = 8;
   } else {
  assert((copy_size & 3) == 0 && (dstOffset & 3) == 0);
- format = VK_FORMAT_R32_UINT;
  bs = 4;
   }
 
@@ -619,7 +614,7 @@ void anv_CmdUpdateBuffer(
  _buffer->device->dynamic_state_block_pool.bo,
  tmp_data.offset,
  dst_buffer->bo, dst_buffer->offset + dstOffset,
- copy_size / bs, 1, format);
+ copy_size / bs, 1, bs);
 
   dataSize -= copy_size;
   dstOffset += copy_size;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (vulkan): anv/meta: Use blitter API in anv_CmdCopyImage()

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: 96ff4d0679e9243d4df070cc0eaef41e1b9d742b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=96ff4d0679e9243d4df070cc0eaef41e1b9d742b

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Mon Feb 29 12:19:51 2016 -0800

anv/meta: Use blitter API in anv_CmdCopyImage()

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 113 +++
 1 file changed, 42 insertions(+), 71 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index 8ca1871..2e529ee 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -836,7 +836,7 @@ void anv_CmdCopyImage(
 */
assert(src_image->samples == dest_image->samples);
 
-   meta_prepare_blit(cmd_buffer, _state);
+   anv_meta_begin_blit2d(cmd_buffer, _state);
 
for (unsigned r = 0; r < regionCount; r++) {
   assert(pRegions[r].srcSubresource.aspectMask ==
@@ -844,84 +844,55 @@ void anv_CmdCopyImage(
 
   VkImageAspectFlags aspect = pRegions[r].srcSubresource.aspectMask;
 
-  VkFormat src_format = choose_iview_format(src_image, aspect);
-  VkFormat dst_format = choose_iview_format(dest_image, aspect);
-
-  struct anv_image_view src_iview;
-  anv_image_view_init(_iview, cmd_buffer->device,
- &(VkImageViewCreateInfo) {
-.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
-.image = srcImage,
-.viewType = anv_meta_get_view_type(src_image),
-.format = src_format,
-.subresourceRange = {
-   .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
-   .baseMipLevel = pRegions[r].srcSubresource.mipLevel,
-   .levelCount = 1,
-   .baseArrayLayer = pRegions[r].srcSubresource.baseArrayLayer,
-   .layerCount = pRegions[r].dstSubresource.layerCount,
-},
- },
- cmd_buffer, 0, VK_IMAGE_USAGE_SAMPLED_BIT);
-
-  const uint32_t dest_base_array_slice =
- anv_meta_get_iview_layer(dest_image, [r].dstSubresource,
-  [r].dstOffset);
+  /* Create blit surfaces */
+  struct isl_surf *src_isl_surf =
+ _image_get_surface_for_aspect_mask(src_image, aspect)->isl;
+  struct isl_surf *dst_isl_surf =
+ _image_get_surface_for_aspect_mask(dest_image, aspect)->isl;
+  struct anv_meta_blit2d_surf b_src = blit_surf_for_image(src_image, 
src_isl_surf);
+  struct anv_meta_blit2d_surf b_dst = blit_surf_for_image(dest_image, 
dst_isl_surf);
 
+  /* Start creating blit rect */
+  const VkOffset3D dst_offset_el = meta_region_offset_el(dest_image, 
[r].dstOffset);
+  const VkOffset3D src_offset_el = meta_region_offset_el(src_image, 
[r].srcOffset);
+  const VkExtent3D img_extent_el = 
meta_region_extent_el(src_image->vk_format,
+
[r].extent);
+  struct anv_meta_blit2d_rect rect = {
+ .width = img_extent_el.width,
+ .height = img_extent_el.height,
+  };
 
+  /* Loop through each 3D or array slice */
   unsigned num_slices_3d = pRegions[r].extent.depth;
   unsigned num_slices_array = pRegions[r].dstSubresource.layerCount;
   unsigned slice_3d = 0;
   unsigned slice_array = 0;
   while (slice_3d < num_slices_3d && slice_array < num_slices_array) {
- VkOffset3D src_offset = pRegions[r].srcOffset;
- src_offset.z += slice_3d + slice_array;
-
- uint32_t img_x = 0;
- uint32_t img_y = 0;
- uint32_t img_o = 0;
- if (isl_format_is_compressed(dest_image->format->isl_format))
-
isl_surf_get_image_intratile_offset_el(_buffer->device->isl_dev,
-   
_image->color_surface.isl,
-   
pRegions[r].dstSubresource.mipLevel,
-   
pRegions[r].dstSubresource.baseArrayLayer + slice_array,
-   pRegions[r].dstOffset.z + 
slice_3d,
-   _o, _x, _y);
-
- VkOffset3D dest_offset_el = meta_region_offset_el(dest_image, 
[r].dstOffset);
- dest_offset_el.x += img_x;
- dest_offset_el.y += img_y;
- dest_offset_el.z = 0;
-
- struct anv_image_view dest_iview;
- anv_image_view_init(_iview, cmd_buffer->device,
-&(VkImageViewCreateInfo) {
-   .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
-   .image = destImage,
-   .viewType = anv_meta_get_view_type(dest_image),
-   .format = dst_format,
-   .subresourceRange = {
-  .aspect

Mesa (vulkan): anv/meta: Use blitter API for state-handling in Buffer Update/Copy

2016-03-03 Thread Nanley Chery
Module: Mesa
Branch: vulkan
Commit: d20f6abc85c1dc4f4a2aadd352b64502930a0541
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d20f6abc85c1dc4f4a2aadd352b64502930a0541

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Mar  2 14:33:51 2016 -0800

anv/meta: Use blitter API for state-handling in Buffer Update/Copy

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/vulkan/anv_meta_blit.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/intel/vulkan/anv_meta_blit.c b/src/intel/vulkan/anv_meta_blit.c
index bd1c979..3fc4631 100644
--- a/src/intel/vulkan/anv_meta_blit.c
+++ b/src/intel/vulkan/anv_meta_blit.c
@@ -601,7 +601,7 @@ void anv_CmdCopyBuffer(
 
struct anv_meta_saved_state saved_state;
 
-   meta_prepare_blit(cmd_buffer, _state);
+   anv_meta_begin_blit2d(cmd_buffer, _state);
 
for (unsigned r = 0; r < regionCount; r++) {
   uint64_t src_offset = src_buffer->offset + pRegions[r].srcOffset;
@@ -661,7 +661,7 @@ void anv_CmdCopyBuffer(
   }
}
 
-   meta_finish_blit(cmd_buffer, _state);
+   anv_meta_end_blit2d(cmd_buffer, _state);
 }
 
 void anv_CmdUpdateBuffer(
@@ -675,7 +675,7 @@ void anv_CmdUpdateBuffer(
ANV_FROM_HANDLE(anv_buffer, dst_buffer, dstBuffer);
struct anv_meta_saved_state saved_state;
 
-   meta_prepare_blit(cmd_buffer, _state);
+   anv_meta_begin_blit2d(cmd_buffer, _state);
 
/* We can't quite grab a full block because the state stream needs a
 * little data at the top to build its linked list.
@@ -714,7 +714,7 @@ void anv_CmdUpdateBuffer(
   pData = (void *)pData + copy_size;
}
 
-   meta_finish_blit(cmd_buffer, _state);
+   anv_meta_end_blit2d(cmd_buffer, _state);
 }
 
 static VkFormat

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


  1   2   3   >