Re: [Mesa-dev] [PATCH v2] swr: [rasterizer common/core/jitter] fetch support for GL_FIXED

2016-12-07 Thread Cherniak, Bruce
Reviewed-by: Bruce Cherniak  

> On Dec 7, 2016, at 7:16 PM, Tim Rowley  wrote:
> 
> v2: use fmul(1/65536) instead of fdiv(65535)
> ---
> .../drivers/swr/rasterizer/common/formats.cpp  | 104 ++---
> .../drivers/swr/rasterizer/common/formats.h|   7 +-
> .../drivers/swr/rasterizer/core/format_traits.h|  90 +-
> .../drivers/swr/rasterizer/jitter/fetch_jit.cpp|  12 +++
> src/gallium/drivers/swr/swr_screen.cpp |   9 ++
> 5 files changed, 188 insertions(+), 34 deletions(-)
> 
> diff --git a/src/gallium/drivers/swr/rasterizer/common/formats.cpp 
> b/src/gallium/drivers/swr/rasterizer/common/formats.cpp
> index b3a95f2..aba4c3f 100644
> --- a/src/gallium/drivers/swr/rasterizer/common/formats.cpp
> +++ b/src/gallium/drivers/swr/rasterizer/common/formats.cpp
> @@ -449,16 +449,26 @@ const SWR_FORMAT_INFO gFormatInfo[] = {
> { 0.0f, 0.0f, 0.0f, 0.0f },
> 1, 1
> },
> -// padding (0x20)
> +// R32G32B32A32_SFIXED (0x20)
> {
> -nullptr,
> -{ SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, 
> SWR_TYPE_UNKNOWN },
> -{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },
> -0, 0, 0, false, false, false, false,
> -{ false, false, false, false },
> -{ 0.0f, 0.0f, 0.0f, 0.0f },
> -1, 1
> +"R32G32B32A32_SFIXED",
> +{ SWR_TYPE_SFIXED, SWR_TYPE_SFIXED, SWR_TYPE_SFIXED, SWR_TYPE_SFIXED 
> },
> +{ 0, 0, 0, 0x3f80 }, // Defaults for missing components
> +{ 0, 1, 2, 3 }, // Swizzle
> +{ 32, 32, 32, 32 }, // Bits per component
> +128, // Bits per element
> +16, // Bytes per element
> +4, // Num components
> +false, // isSRGB
> +false, // isBC
> +false, // isSubsampled
> +false, // isLuminance
> +{ false, false, false, false }, // Is normalized?
> +{ 1.0f, 1.0f, 1.0f, 1.0f }, // To float scale factor
> +1, // bcWidth
> +1, // bcHeight
> },
> +
> // padding (0x21)
> {
> nullptr,
> @@ -979,16 +989,26 @@ const SWR_FORMAT_INFO gFormatInfo[] = {
> { 0.0f, 0.0f, 0.0f, 0.0f },
> 1, 1
> },
> -// padding (0x50)
> +// R32G32B32_SFIXED (0x50)
> {
> -nullptr,
> -{ SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, 
> SWR_TYPE_UNKNOWN },
> -{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },
> -0, 0, 0, false, false, false, false,
> -{ false, false, false, false },
> -{ 0.0f, 0.0f, 0.0f, 0.0f },
> -1, 1
> +"R32G32B32_SFIXED",
> +{ SWR_TYPE_SFIXED, SWR_TYPE_SFIXED, SWR_TYPE_SFIXED, 
> SWR_TYPE_UNKNOWN },
> +{ 0, 0, 0, 0x3f80 }, // Defaults for missing components
> +{ 0, 1, 2, 0 }, // Swizzle
> +{ 32, 32, 32, 0 }, // Bits per component
> +96, // Bits per element
> +12, // Bytes per element
> +3, // Num components
> +false, // isSRGB
> +false, // isBC
> +false, // isSubsampled
> +false, // isLuminance
> +{ false, false, false, false }, // Is normalized?
> +{ 1.0f, 1.0f, 1.0f, 0 }, // To float scale factor
> +1, // bcWidth
> +1, // bcHeight
> },
> +
> // padding (0x51)
> {
> nullptr,
> @@ -1969,16 +1989,26 @@ const SWR_FORMAT_INFO gFormatInfo[] = {
> { 0.0f, 0.0f, 0.0f, 0.0f },
> 1, 1
> },
> -// padding (0xA0)
> +// R32G32_SFIXED (0xA0)
> {
> -nullptr,
> -{ SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, 
> SWR_TYPE_UNKNOWN },
> -{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },
> -0, 0, 0, false, false, false, false,
> -{ false, false, false, false },
> -{ 0.0f, 0.0f, 0.0f, 0.0f },
> -1, 1
> +"R32G32_SFIXED",
> +{ SWR_TYPE_SFIXED, SWR_TYPE_SFIXED, SWR_TYPE_UNKNOWN, 
> SWR_TYPE_UNKNOWN },
> +{ 0, 0, 0, 0x3f80 }, // Defaults for missing components
> +{ 0, 1, 0, 0 }, // Swizzle
> +{ 32, 32, 0, 0 }, // Bits per component
> +64, // Bits per element
> +8, // Bytes per element
> +2, // Num components
> +false, // isSRGB
> +false, // isBC
> +false, // isSubsampled
> +false, // isLuminance
> +{ false, false, false, false }, // Is normalized?
> +{ 1.0f, 1.0f, 0, 0 }, // To float scale factor
> +1, // bcWidth
> +1, // bcHeight
> },
> +
> // padding (0xA1)
> {
> nullptr,
> @@ -5909,16 +5939,26 @@ const SWR_FORMAT_INFO gFormatInfo[] = {
> 1, // bcHeight
> },
> 
> -// padding (0x1B2)
> +// R32_SFIXED (0x1B2)
> {
> -nullptr,
> -{ SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, 
> SWR_TYPE_UNKNOWN },
> -{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },
> -0, 0, 0, false, false, false, false,

[Mesa-dev] [PATCH v2] swr: [rasterizer common/core/jitter] fetch support for GL_FIXED

2016-12-07 Thread Tim Rowley
v2: use fmul(1/65536) instead of fdiv(65535)
---
 .../drivers/swr/rasterizer/common/formats.cpp  | 104 ++---
 .../drivers/swr/rasterizer/common/formats.h|   7 +-
 .../drivers/swr/rasterizer/core/format_traits.h|  90 +-
 .../drivers/swr/rasterizer/jitter/fetch_jit.cpp|  12 +++
 src/gallium/drivers/swr/swr_screen.cpp |   9 ++
 5 files changed, 188 insertions(+), 34 deletions(-)

diff --git a/src/gallium/drivers/swr/rasterizer/common/formats.cpp 
b/src/gallium/drivers/swr/rasterizer/common/formats.cpp
index b3a95f2..aba4c3f 100644
--- a/src/gallium/drivers/swr/rasterizer/common/formats.cpp
+++ b/src/gallium/drivers/swr/rasterizer/common/formats.cpp
@@ -449,16 +449,26 @@ const SWR_FORMAT_INFO gFormatInfo[] = {
 { 0.0f, 0.0f, 0.0f, 0.0f },
 1, 1
 },
-// padding (0x20)
+// R32G32B32A32_SFIXED (0x20)
 {
-nullptr,
-{ SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, 
SWR_TYPE_UNKNOWN },
-{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },
-0, 0, 0, false, false, false, false,
-{ false, false, false, false },
-{ 0.0f, 0.0f, 0.0f, 0.0f },
-1, 1
+"R32G32B32A32_SFIXED",
+{ SWR_TYPE_SFIXED, SWR_TYPE_SFIXED, SWR_TYPE_SFIXED, SWR_TYPE_SFIXED },
+{ 0, 0, 0, 0x3f80 }, // Defaults for missing components
+{ 0, 1, 2, 3 }, // Swizzle
+{ 32, 32, 32, 32 }, // Bits per component
+128, // Bits per element
+16, // Bytes per element
+4, // Num components
+false, // isSRGB
+false, // isBC
+false, // isSubsampled
+false, // isLuminance
+{ false, false, false, false }, // Is normalized?
+{ 1.0f, 1.0f, 1.0f, 1.0f }, // To float scale factor
+1, // bcWidth
+1, // bcHeight
 },
+
 // padding (0x21)
 {
 nullptr,
@@ -979,16 +989,26 @@ const SWR_FORMAT_INFO gFormatInfo[] = {
 { 0.0f, 0.0f, 0.0f, 0.0f },
 1, 1
 },
-// padding (0x50)
+// R32G32B32_SFIXED (0x50)
 {
-nullptr,
-{ SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, 
SWR_TYPE_UNKNOWN },
-{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },
-0, 0, 0, false, false, false, false,
-{ false, false, false, false },
-{ 0.0f, 0.0f, 0.0f, 0.0f },
-1, 1
+"R32G32B32_SFIXED",
+{ SWR_TYPE_SFIXED, SWR_TYPE_SFIXED, SWR_TYPE_SFIXED, SWR_TYPE_UNKNOWN 
},
+{ 0, 0, 0, 0x3f80 }, // Defaults for missing components
+{ 0, 1, 2, 0 }, // Swizzle
+{ 32, 32, 32, 0 }, // Bits per component
+96, // Bits per element
+12, // Bytes per element
+3, // Num components
+false, // isSRGB
+false, // isBC
+false, // isSubsampled
+false, // isLuminance
+{ false, false, false, false }, // Is normalized?
+{ 1.0f, 1.0f, 1.0f, 0 }, // To float scale factor
+1, // bcWidth
+1, // bcHeight
 },
+
 // padding (0x51)
 {
 nullptr,
@@ -1969,16 +1989,26 @@ const SWR_FORMAT_INFO gFormatInfo[] = {
 { 0.0f, 0.0f, 0.0f, 0.0f },
 1, 1
 },
-// padding (0xA0)
+// R32G32_SFIXED (0xA0)
 {
-nullptr,
-{ SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, 
SWR_TYPE_UNKNOWN },
-{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },
-0, 0, 0, false, false, false, false,
-{ false, false, false, false },
-{ 0.0f, 0.0f, 0.0f, 0.0f },
-1, 1
+"R32G32_SFIXED",
+{ SWR_TYPE_SFIXED, SWR_TYPE_SFIXED, SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN 
},
+{ 0, 0, 0, 0x3f80 }, // Defaults for missing components
+{ 0, 1, 0, 0 }, // Swizzle
+{ 32, 32, 0, 0 }, // Bits per component
+64, // Bits per element
+8, // Bytes per element
+2, // Num components
+false, // isSRGB
+false, // isBC
+false, // isSubsampled
+false, // isLuminance
+{ false, false, false, false }, // Is normalized?
+{ 1.0f, 1.0f, 0, 0 }, // To float scale factor
+1, // bcWidth
+1, // bcHeight
 },
+
 // padding (0xA1)
 {
 nullptr,
@@ -5909,16 +5939,26 @@ const SWR_FORMAT_INFO gFormatInfo[] = {
 1, // bcHeight
 },
 
-// padding (0x1B2)
+// R32_SFIXED (0x1B2)
 {
-nullptr,
-{ SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, 
SWR_TYPE_UNKNOWN },
-{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },{ 0, 0, 0, 0 },
-0, 0, 0, false, false, false, false,
-{ false, false, false, false },
-{ 0.0f, 0.0f, 0.0f, 0.0f },
-1, 1
+"R32_SFIXED",
+{ SWR_TYPE_SFIXED, SWR_TYPE_UNKNOWN, SWR_TYPE_UNKNOWN, 
SWR_TYPE_UNKNOWN },
+{ 0, 0, 0, 0x3f80 }, // Defaults for missing components
+{ 0, 0, 0, 0 }, // Swizzle
+{ 32, 0, 0, 0 }, // Bits per component
+32, // Bits per