Re: [Mesa-dev] [PATCH v2] swr: [rasterizer common/core/jitter] fetch support for GL_FIXED
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
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