Re: [Mesa-dev] [PATCH v3 10/26] python: Use explicit integer divisions

2018-08-07 Thread Dylan Baker
Reviewed-by: Dylan Baker 

Quoting Mathieu Bridon (2018-07-25 02:53:54)
> In Python 2, divisions of integers return an integer:
> 
> >>> 32 / 4
> 8
> 
> In Python 3 though, they return floats:
> 
> >>> 32 / 4
> 8.0
> 
> However, Python 3 has an explicit integer division operator:
> 
> >>> 32 // 4
> 8
> 
> That operator exists on Python >= 2.2, so let's use it everywhere to
> make the scripts compatible with both Python 2 and 3.
> 
> In addition, using __future__.division tells Python 2 to behave the same
> way as Python 3, which helps ensure the scripts produce the same output
> in both versions of Python.
> 
> Signed-off-by: Mathieu Bridon 
> Reviewed-by: Eric Engestrom  (v2)
> ---
>  src/gallium/auxiliary/util/u_format_pack.py  | 4 ++--
>  src/gallium/auxiliary/util/u_format_parse.py | 7 +--
>  src/mapi/glapi/gen/glX_proto_send.py | 4 ++--
>  src/mesa/main/format_info.py | 4 ++--
>  src/mesa/main/format_pack.py | 8 
>  src/mesa/main/format_unpack.py   | 8 
>  6 files changed, 19 insertions(+), 16 deletions(-)
> 
> diff --git a/src/gallium/auxiliary/util/u_format_pack.py 
> b/src/gallium/auxiliary/util/u_format_pack.py
> index 7a952a48b3..ad2e49281f 100644
> --- a/src/gallium/auxiliary/util/u_format_pack.py
> +++ b/src/gallium/auxiliary/util/u_format_pack.py
> @@ -36,7 +36,7 @@
>  '''
>  
>  
> -from __future__ import print_function
> +from __future__ import division, print_function
>  
>  from u_format_parse import *
>  
> @@ -240,7 +240,7 @@ def value_to_native(type, value):
>  return truncate_mantissa(value, 23)
>  return value
>  if type.type == FIXED:
> -return int(value * (1 << (type.size/2)))
> +return int(value * (1 << (type.size // 2)))
>  if not type.norm:
>  return int(value)
>  if type.type == UNSIGNED:
> diff --git a/src/gallium/auxiliary/util/u_format_parse.py 
> b/src/gallium/auxiliary/util/u_format_parse.py
> index c0456f6d15..d3874cd895 100644
> --- a/src/gallium/auxiliary/util/u_format_parse.py
> +++ b/src/gallium/auxiliary/util/u_format_parse.py
> @@ -29,6 +29,9 @@
>  '''
>  
>  
> +from __future__ import division
> +
> +
>  VOID, UNSIGNED, SIGNED, FIXED, FLOAT = range(5)
>  
>  SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_W, SWIZZLE_0, SWIZZLE_1, 
> SWIZZLE_NONE, = range(7)
> @@ -76,7 +79,7 @@ class Channel:
>  if self.type == FLOAT:
>  return VERY_LARGE
>  if self.type == FIXED:
> -return (1 << (self.size/2)) - 1
> +return (1 << (self.size // 2)) - 1
>  if self.norm:
>  return 1
>  if self.type == UNSIGNED:
> @@ -90,7 +93,7 @@ class Channel:
>  if self.type == FLOAT:
>  return -VERY_LARGE
>  if self.type == FIXED:
> -return -(1 << (self.size/2))
> +return -(1 << (self.size // 2))
>  if self.type == UNSIGNED:
>  return 0
>  if self.norm:
> diff --git a/src/mapi/glapi/gen/glX_proto_send.py 
> b/src/mapi/glapi/gen/glX_proto_send.py
> index a920ecc012..03067d8a3c 100644
> --- a/src/mapi/glapi/gen/glX_proto_send.py
> +++ b/src/mapi/glapi/gen/glX_proto_send.py
> @@ -26,7 +26,7 @@
>  #Ian Romanick 
>  #Jeremy Kolb 
>  
> -from __future__ import print_function
> +from __future__ import division, print_function
>  
>  import argparse
>  
> @@ -809,7 +809,7 @@ generic_%u_byte( GLint rop, const void * ptr )
>  # Dividing by the array size (1 for
>  # non-arrays) gives us this.
>  
> -s = p.size() / p.get_element_count()
> +s = p.size() // p.get_element_count()
>  print("   %s __glXReadReply(dpy, %s, %s, %s);" % 
> (return_str, s, p.name, aa))
>  got_reply = 1
>  
> diff --git a/src/mesa/main/format_info.py b/src/mesa/main/format_info.py
> index bbecaa2451..00e27b3fba 100644
> --- a/src/mesa/main/format_info.py
> +++ b/src/mesa/main/format_info.py
> @@ -21,7 +21,7 @@
>  # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
>  # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
>  
> -from __future__ import print_function
> +from __future__ import division, print_function
>  
>  import format_parser as parser
>  import sys
> @@ -198,7 +198,7 @@ for fmat in formats:
>chan = fmat.array_element()
>norm = chan.norm or chan.type == parser.FLOAT
>print('  .ArrayFormat = MESA_ARRAY_FORMAT({0}),'.format(', '.join([
> - str(chan.size / 8),
> + str(chan.size // 8),
>   str(int(chan.sign)),
>   str(int(chan.type == parser.FLOAT)),
>   str(int(norm)),
> diff --git a/src/mesa/main/format_pack.py b/src/mesa/main/format_pack.py
> index d3c8d24acd..0b9e0d424d 100644
> --- a/src/mesa/main/format_pack.py
> +++ b/src/mesa/main/format_pack.py
> @@ -356,7 +356,7 @@ 

[Mesa-dev] [PATCH v3 10/26] python: Use explicit integer divisions

2018-07-25 Thread Mathieu Bridon
In Python 2, divisions of integers return an integer:

>>> 32 / 4
8

In Python 3 though, they return floats:

>>> 32 / 4
8.0

However, Python 3 has an explicit integer division operator:

>>> 32 // 4
8

That operator exists on Python >= 2.2, so let's use it everywhere to
make the scripts compatible with both Python 2 and 3.

In addition, using __future__.division tells Python 2 to behave the same
way as Python 3, which helps ensure the scripts produce the same output
in both versions of Python.

Signed-off-by: Mathieu Bridon 
Reviewed-by: Eric Engestrom  (v2)
---
 src/gallium/auxiliary/util/u_format_pack.py  | 4 ++--
 src/gallium/auxiliary/util/u_format_parse.py | 7 +--
 src/mapi/glapi/gen/glX_proto_send.py | 4 ++--
 src/mesa/main/format_info.py | 4 ++--
 src/mesa/main/format_pack.py | 8 
 src/mesa/main/format_unpack.py   | 8 
 6 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_format_pack.py 
b/src/gallium/auxiliary/util/u_format_pack.py
index 7a952a48b3..ad2e49281f 100644
--- a/src/gallium/auxiliary/util/u_format_pack.py
+++ b/src/gallium/auxiliary/util/u_format_pack.py
@@ -36,7 +36,7 @@
 '''
 
 
-from __future__ import print_function
+from __future__ import division, print_function
 
 from u_format_parse import *
 
@@ -240,7 +240,7 @@ def value_to_native(type, value):
 return truncate_mantissa(value, 23)
 return value
 if type.type == FIXED:
-return int(value * (1 << (type.size/2)))
+return int(value * (1 << (type.size // 2)))
 if not type.norm:
 return int(value)
 if type.type == UNSIGNED:
diff --git a/src/gallium/auxiliary/util/u_format_parse.py 
b/src/gallium/auxiliary/util/u_format_parse.py
index c0456f6d15..d3874cd895 100644
--- a/src/gallium/auxiliary/util/u_format_parse.py
+++ b/src/gallium/auxiliary/util/u_format_parse.py
@@ -29,6 +29,9 @@
 '''
 
 
+from __future__ import division
+
+
 VOID, UNSIGNED, SIGNED, FIXED, FLOAT = range(5)
 
 SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_W, SWIZZLE_0, SWIZZLE_1, 
SWIZZLE_NONE, = range(7)
@@ -76,7 +79,7 @@ class Channel:
 if self.type == FLOAT:
 return VERY_LARGE
 if self.type == FIXED:
-return (1 << (self.size/2)) - 1
+return (1 << (self.size // 2)) - 1
 if self.norm:
 return 1
 if self.type == UNSIGNED:
@@ -90,7 +93,7 @@ class Channel:
 if self.type == FLOAT:
 return -VERY_LARGE
 if self.type == FIXED:
-return -(1 << (self.size/2))
+return -(1 << (self.size // 2))
 if self.type == UNSIGNED:
 return 0
 if self.norm:
diff --git a/src/mapi/glapi/gen/glX_proto_send.py 
b/src/mapi/glapi/gen/glX_proto_send.py
index a920ecc012..03067d8a3c 100644
--- a/src/mapi/glapi/gen/glX_proto_send.py
+++ b/src/mapi/glapi/gen/glX_proto_send.py
@@ -26,7 +26,7 @@
 #Ian Romanick 
 #Jeremy Kolb 
 
-from __future__ import print_function
+from __future__ import division, print_function
 
 import argparse
 
@@ -809,7 +809,7 @@ generic_%u_byte( GLint rop, const void * ptr )
 # Dividing by the array size (1 for
 # non-arrays) gives us this.
 
-s = p.size() / p.get_element_count()
+s = p.size() // p.get_element_count()
 print("   %s __glXReadReply(dpy, %s, %s, %s);" % 
(return_str, s, p.name, aa))
 got_reply = 1
 
diff --git a/src/mesa/main/format_info.py b/src/mesa/main/format_info.py
index bbecaa2451..00e27b3fba 100644
--- a/src/mesa/main/format_info.py
+++ b/src/mesa/main/format_info.py
@@ -21,7 +21,7 @@
 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-from __future__ import print_function
+from __future__ import division, print_function
 
 import format_parser as parser
 import sys
@@ -198,7 +198,7 @@ for fmat in formats:
   chan = fmat.array_element()
   norm = chan.norm or chan.type == parser.FLOAT
   print('  .ArrayFormat = MESA_ARRAY_FORMAT({0}),'.format(', '.join([
- str(chan.size / 8),
+ str(chan.size // 8),
  str(int(chan.sign)),
  str(int(chan.type == parser.FLOAT)),
  str(int(norm)),
diff --git a/src/mesa/main/format_pack.py b/src/mesa/main/format_pack.py
index d3c8d24acd..0b9e0d424d 100644
--- a/src/mesa/main/format_pack.py
+++ b/src/mesa/main/format_pack.py
@@ -356,7 +356,7 @@ _mesa_pack_ubyte_rgba_row(mesa_format format, GLuint n,
case ${f.name}:
   for (i = 0; i < n; ++i) {
  pack_ubyte_${f.short_name()}(src[i], d);
- d += ${f.block_size() / 8};
+ d += ${f.block_size() // 8};
   }
   break;
 %endfor
@@ -388,7 +388,7 @@ _mesa_pack_uint_rgba_row(mesa_format format, GLuint n,
case ${f.name}:
   for (i = 0; i < n;