Revert "Add integer texture support."
authorLeon Scroggins <scroggo@google.com>
Thu, 10 Nov 2016 18:31:58 +0000 (18:31 +0000)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Thu, 10 Nov 2016 18:32:14 +0000 (18:32 +0000)
This reverts commit 434c534bd0ec08cb355fecfb6d2110197b523e74.

Reason for revert: Undefined behavior. From

https://uberchromegw.corp.google.com/i/client.skia/builders/Test-Ubuntu-Clang-Golo-GPU-GT610-x86_64-Debug-ASAN/builds/1272/steps/test_skia%20on%20Ubuntu/logs/stdio

../../../tests/IntTextureTest.cpp:51:44: runtime error: left shift of negative value -1
    #0 0x2257480 in test_IntTexture(skiatest::Reporter*, sk_gpu_test::ContextInfo const&) (/b/swarm_slave/w/ir0aO1sa/out/Debug/dm+0x2257480)
    #1 0x1ca1066 in skiatest::RunWithGPUTestContexts(void (*)(skiatest::Reporter*, sk_gpu_test::ContextInfo const&), bool (*)(sk_gpu_test::GrContextFactory::ContextType), skiatest::Reporter*, sk_gpu_test::GrContextFactory*) (/b/swarm_slave/w/ir0aO1sa/out/Debug/dm+0x1ca1066)
    #2 0x1ca080d in run_test(skiatest::Test) (/b/swarm_slave/w/ir0aO1sa/out/Debug/dm+0x1ca080d)
    #3 0x1c9e5e9 in dm_main() (/b/swarm_slave/w/ir0aO1sa/out/Debug/dm+0x1c9e5e9)
    #4 0x7f2d2ba8df44 in __libc_start_main /build/eglibc-oGUzwX/eglibc-2.19/csu/libc-start.c:287
    #5 0x1bb3028 in _start (/b/swarm_slave/w/ir0aO1sa/out/Debug/dm+0x1bb3028)

SUMMARY: AddressSanitizer: undefined-behavior ../../../tests/IntTextureTest.cpp:51:44 in
step returned non-zero exit code: 1

Original change's description:
> Add integer texture support.
>
> This allows us to create integer textures and sample them from a GrProcessor's code.
>
> Filtering is limited to NEAREST.
>
> Adds tests for reading/writing pixels, copying, and drawing. These operations are not allowed to convert to fixed/float configs.
>
> Vulkan support is TBD.
>
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4348
>
> Change-Id: If38d89a03285d4bd98d1f14f9638b0320977e43d
> Reviewed-on: https://skia-review.googlesource.com/4348
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Chris Dalton <csmartdalton@google.com>
>

TBR=bsalomon@google.com,csmartdalton@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I39f1a0a0dd3e6cde1143c8cc1217d2e3d5977b21
Reviewed-on: https://skia-review.googlesource.com/4663
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
25 files changed:
gn/tests.gni
include/gpu/GrColor.h
include/gpu/GrTypes.h
include/gpu/GrTypesPriv.h
src/gpu/GrCaps.cpp
src/gpu/GrContext.cpp
src/gpu/GrGpu.cpp
src/gpu/GrTextureProvider.cpp
src/gpu/batches/GrCopySurfaceBatch.cpp
src/gpu/gl/GrGLCaps.cpp
src/gpu/gl/GrGLCaps.h
src/gpu/gl/GrGLDefines.h
src/gpu/gl/GrGLGpu.cpp
src/gpu/gl/GrGLGpu.h
src/gpu/gl/GrGLTexture.cpp
src/gpu/glsl/GrGLSL.h
src/gpu/glsl/GrGLSLCaps.cpp
src/gpu/glsl/GrGLSLCaps.h
src/gpu/vk/GrVkUniformHandler.cpp
src/gpu/vk/GrVkUtil.cpp
src/gpu/vk/GrVkVaryingHandler.cpp
src/sksl/SkSLCompiler.cpp
src/sksl/SkSLContext.h
src/sksl/sksl.include
tests/IntTextureTest.cpp [deleted file]

index c726204..4fa653a 100644 (file)
@@ -109,7 +109,6 @@ tests_sources = [
   "$_tests/IndexedPngOverflowTest.cpp",
   "$_tests/InfRectTest.cpp",
   "$_tests/InterpolatorTest.cpp",
-  "$_tests/IntTextureTest.cpp",
   "$_tests/InvalidIndexedPngTest.cpp",
   "$_tests/IsClosedSingleContourTest.cpp",
   "$_tests/LayerDrawLooperTest.cpp",
index 7277f0b..cde9b74 100644 (file)
@@ -295,7 +295,6 @@ static inline uint32_t GrPixelConfigComponentMask(GrPixelConfig config) {
         kRGBA_GrColorComponentFlags,    // kBGRA_8888_GrPixelConfig
         kRGBA_GrColorComponentFlags,    // kSRGBA_8888_GrPixelConfig
         kRGBA_GrColorComponentFlags,    // kSBGRA_8888_GrPixelConfig
-        kRGBA_GrColorComponentFlags,    // kRGBA_8888_sint_GrPixelConfig
         kRGB_GrColorComponentFlags,     // kETC1_GrPixelConfig
         kA_GrColorComponentFlag,        // kLATC_GrPixelConfig
         kA_GrColorComponentFlag,        // kR11_EAC_GrPixelConfig
@@ -315,14 +314,13 @@ static inline uint32_t GrPixelConfigComponentMask(GrPixelConfig config) {
     GR_STATIC_ASSERT(6  == kBGRA_8888_GrPixelConfig);
     GR_STATIC_ASSERT(7  == kSRGBA_8888_GrPixelConfig);
     GR_STATIC_ASSERT(8  == kSBGRA_8888_GrPixelConfig);
-    GR_STATIC_ASSERT(9  == kRGBA_8888_sint_GrPixelConfig);
-    GR_STATIC_ASSERT(10 == kETC1_GrPixelConfig);
-    GR_STATIC_ASSERT(11 == kLATC_GrPixelConfig);
-    GR_STATIC_ASSERT(12 == kR11_EAC_GrPixelConfig);
-    GR_STATIC_ASSERT(13 == kASTC_12x12_GrPixelConfig);
-    GR_STATIC_ASSERT(14 == kRGBA_float_GrPixelConfig);
-    GR_STATIC_ASSERT(15 == kAlpha_half_GrPixelConfig);
-    GR_STATIC_ASSERT(16 == kRGBA_half_GrPixelConfig);
+    GR_STATIC_ASSERT(9  == kETC1_GrPixelConfig);
+    GR_STATIC_ASSERT(10  == kLATC_GrPixelConfig);
+    GR_STATIC_ASSERT(11  == kR11_EAC_GrPixelConfig);
+    GR_STATIC_ASSERT(12 == kASTC_12x12_GrPixelConfig);
+    GR_STATIC_ASSERT(13 == kRGBA_float_GrPixelConfig);
+    GR_STATIC_ASSERT(14 == kAlpha_half_GrPixelConfig);
+    GR_STATIC_ASSERT(15 == kRGBA_half_GrPixelConfig);
     GR_STATIC_ASSERT(SK_ARRAY_COUNT(kFlags) == kGrPixelConfigCnt);
 }
 
index 846537a..3ec3023 100644 (file)
@@ -230,10 +230,6 @@ enum GrPixelConfig {
      */
     kSBGRA_8888_GrPixelConfig,
     /**
-     * 8 bit signed integers per-channel. Byte order is b,g,r,a.
-     */
-    kRGBA_8888_sint_GrPixelConfig,
-    /**
      * ETC1 Compressed Data
      */
     kETC1_GrPixelConfig,
@@ -322,7 +318,7 @@ static inline GrPixelConfig GrMakePixelConfigUncompressed(GrPixelConfig config)
 }
 
 // Returns true if the pixel config is 32 bits per pixel
-static inline bool GrPixelConfigIs8888Unorm(GrPixelConfig config) {
+static inline bool GrPixelConfigIs8888(GrPixelConfig config) {
     switch (config) {
         case kRGBA_8888_GrPixelConfig:
         case kBGRA_8888_GrPixelConfig:
@@ -376,7 +372,6 @@ static inline size_t GrBytesPerPixel(GrPixelConfig config) {
         case kBGRA_8888_GrPixelConfig:
         case kSRGBA_8888_GrPixelConfig:
         case kSBGRA_8888_GrPixelConfig:
-        case kRGBA_8888_sint_GrPixelConfig:
             return 4;
         case kRGBA_half_GrPixelConfig:
             return 8;
@@ -421,10 +416,6 @@ static inline bool GrPixelConfigIsFloatingPoint(GrPixelConfig config) {
     }
 }
 
-static inline bool GrPixelConfigIsSint(GrPixelConfig config) {
-    return config == kRGBA_8888_sint_GrPixelConfig;
-}
-
 /**
  * Optional bitfield flags that can be set on GrSurfaceDesc (below).
  */
index 44d5599..636e72a 100644 (file)
@@ -25,7 +25,6 @@ enum GrSLType {
     kMat33f_GrSLType,
     kMat44f_GrSLType,
     kTexture2DSampler_GrSLType,
-    kTexture2DISampler_GrSLType,
     kTextureExternalSampler_GrSLType,
     kTexture2DRectSampler_GrSLType,
     kTextureBufferSampler_GrSLType,
@@ -88,7 +87,7 @@ static const int kGrSLPrecisionCount = kLast_GrSLPrecision + 1;
  */
 static inline int GrSLTypeVectorCount(GrSLType type) {
     SkASSERT(type >= 0 && type < static_cast<GrSLType>(kGrSLTypeCount));
-    static const int kCounts[] = { -1, 1, 2, 3, 4, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, -1, -1, -1 };
+    static const int kCounts[] = { -1, 1, 2, 3, 4, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, -1, -1 };
     return kCounts[type];
 
     GR_STATIC_ASSERT(0 == kVoid_GrSLType);
@@ -100,15 +99,14 @@ static inline int GrSLTypeVectorCount(GrSLType type) {
     GR_STATIC_ASSERT(6 == kMat33f_GrSLType);
     GR_STATIC_ASSERT(7 == kMat44f_GrSLType);
     GR_STATIC_ASSERT(8 == kTexture2DSampler_GrSLType);
-    GR_STATIC_ASSERT(9 == kTexture2DISampler_GrSLType);
-    GR_STATIC_ASSERT(10 == kTextureExternalSampler_GrSLType);
-    GR_STATIC_ASSERT(11 == kTexture2DRectSampler_GrSLType);
-    GR_STATIC_ASSERT(12 == kTextureBufferSampler_GrSLType);
-    GR_STATIC_ASSERT(13 == kBool_GrSLType);
-    GR_STATIC_ASSERT(14 == kInt_GrSLType);
-    GR_STATIC_ASSERT(15 == kUint_GrSLType);
-    GR_STATIC_ASSERT(16 == kTexture2D_GrSLType);
-    GR_STATIC_ASSERT(17 == kSampler_GrSLType);
+    GR_STATIC_ASSERT(9 == kTextureExternalSampler_GrSLType);
+    GR_STATIC_ASSERT(10 == kTexture2DRectSampler_GrSLType);
+    GR_STATIC_ASSERT(11 == kTextureBufferSampler_GrSLType);
+    GR_STATIC_ASSERT(12 == kBool_GrSLType);
+    GR_STATIC_ASSERT(13 == kInt_GrSLType);
+    GR_STATIC_ASSERT(14 == kUint_GrSLType);
+    GR_STATIC_ASSERT(15 == kTexture2D_GrSLType);
+    GR_STATIC_ASSERT(16 == kSampler_GrSLType);
     GR_STATIC_ASSERT(SK_ARRAY_COUNT(kCounts) == kGrSLTypeCount);
 }
 
@@ -138,16 +136,15 @@ static inline bool GrSLTypeIsFloatType(GrSLType type) {
     GR_STATIC_ASSERT(6 == kMat33f_GrSLType);
     GR_STATIC_ASSERT(7 == kMat44f_GrSLType);
     GR_STATIC_ASSERT(8 == kTexture2DSampler_GrSLType);
-    GR_STATIC_ASSERT(9 == kTexture2DISampler_GrSLType);
-    GR_STATIC_ASSERT(10 == kTextureExternalSampler_GrSLType);
-    GR_STATIC_ASSERT(11 == kTexture2DRectSampler_GrSLType);
-    GR_STATIC_ASSERT(12 == kTextureBufferSampler_GrSLType);
-    GR_STATIC_ASSERT(13 == kBool_GrSLType);
-    GR_STATIC_ASSERT(14 == kInt_GrSLType);
-    GR_STATIC_ASSERT(15 == kUint_GrSLType);
-    GR_STATIC_ASSERT(16 == kTexture2D_GrSLType);
-    GR_STATIC_ASSERT(17 == kSampler_GrSLType);
-    GR_STATIC_ASSERT(18 == kGrSLTypeCount);
+    GR_STATIC_ASSERT(9 == kTextureExternalSampler_GrSLType);
+    GR_STATIC_ASSERT(10 == kTexture2DRectSampler_GrSLType);
+    GR_STATIC_ASSERT(11 == kTextureBufferSampler_GrSLType);
+    GR_STATIC_ASSERT(12 == kBool_GrSLType);
+    GR_STATIC_ASSERT(13 == kInt_GrSLType);
+    GR_STATIC_ASSERT(14 == kUint_GrSLType);
+    GR_STATIC_ASSERT(15 == kTexture2D_GrSLType);
+    GR_STATIC_ASSERT(16 == kSampler_GrSLType);
+    GR_STATIC_ASSERT(17 == kGrSLTypeCount);
 }
 
 /** Is the shading language type integral (including vectors/matrices)? */
@@ -164,16 +161,15 @@ static inline bool GrSLTypeIsIntType(GrSLType type) {
     GR_STATIC_ASSERT(6 == kMat33f_GrSLType);
     GR_STATIC_ASSERT(7 == kMat44f_GrSLType);
     GR_STATIC_ASSERT(8 == kTexture2DSampler_GrSLType);
-    GR_STATIC_ASSERT(9 == kTexture2DISampler_GrSLType);
-    GR_STATIC_ASSERT(10 == kTextureExternalSampler_GrSLType);
-    GR_STATIC_ASSERT(11 == kTexture2DRectSampler_GrSLType);
-    GR_STATIC_ASSERT(12 == kTextureBufferSampler_GrSLType);
-    GR_STATIC_ASSERT(13 == kBool_GrSLType);
-    GR_STATIC_ASSERT(14 == kInt_GrSLType);
-    GR_STATIC_ASSERT(15 == kUint_GrSLType);
-    GR_STATIC_ASSERT(16 == kTexture2D_GrSLType);
-    GR_STATIC_ASSERT(17 == kSampler_GrSLType);
-    GR_STATIC_ASSERT(18 == kGrSLTypeCount);
+    GR_STATIC_ASSERT(9 == kTextureExternalSampler_GrSLType);
+    GR_STATIC_ASSERT(10 == kTexture2DRectSampler_GrSLType);
+    GR_STATIC_ASSERT(11 == kTextureBufferSampler_GrSLType);
+    GR_STATIC_ASSERT(12 == kBool_GrSLType);
+    GR_STATIC_ASSERT(13 == kInt_GrSLType);
+    GR_STATIC_ASSERT(14 == kUint_GrSLType);
+    GR_STATIC_ASSERT(15 == kTexture2D_GrSLType);
+    GR_STATIC_ASSERT(16 == kSampler_GrSLType);
+    GR_STATIC_ASSERT(17 == kGrSLTypeCount);
 }
 
 /** Is the shading language type numeric (including vectors/matrices)? */
@@ -194,7 +190,6 @@ static inline size_t GrSLTypeSize(GrSLType type) {
         3 * 3 * sizeof(float),    // kMat33f_GrSLType
         4 * 4 * sizeof(float),    // kMat44f_GrSLType
         0,                        // kTexture2DSampler_GrSLType
-        0,                        // kTexture2DISampler_GrSLType
         0,                        // kTextureExternalSampler_GrSLType
         0,                        // kTexture2DRectSampler_GrSLType
         0,                        // kTextureBufferSampler_GrSLType
@@ -215,16 +210,15 @@ static inline size_t GrSLTypeSize(GrSLType type) {
     GR_STATIC_ASSERT(6 == kMat33f_GrSLType);
     GR_STATIC_ASSERT(7 == kMat44f_GrSLType);
     GR_STATIC_ASSERT(8 == kTexture2DSampler_GrSLType);
-    GR_STATIC_ASSERT(9 == kTexture2DISampler_GrSLType);
-    GR_STATIC_ASSERT(10 == kTextureExternalSampler_GrSLType);
-    GR_STATIC_ASSERT(11 == kTexture2DRectSampler_GrSLType);
-    GR_STATIC_ASSERT(12 == kTextureBufferSampler_GrSLType);
-    GR_STATIC_ASSERT(13 == kBool_GrSLType);
-    GR_STATIC_ASSERT(14 == kInt_GrSLType);
-    GR_STATIC_ASSERT(15 == kUint_GrSLType);
-    GR_STATIC_ASSERT(16 == kTexture2D_GrSLType);
-    GR_STATIC_ASSERT(17 == kSampler_GrSLType);
-    GR_STATIC_ASSERT(18 == kGrSLTypeCount);
+    GR_STATIC_ASSERT(9 == kTextureExternalSampler_GrSLType);
+    GR_STATIC_ASSERT(10 == kTexture2DRectSampler_GrSLType);
+    GR_STATIC_ASSERT(11 == kTextureBufferSampler_GrSLType);
+    GR_STATIC_ASSERT(12 == kBool_GrSLType);
+    GR_STATIC_ASSERT(13 == kInt_GrSLType);
+    GR_STATIC_ASSERT(14 == kUint_GrSLType);
+    GR_STATIC_ASSERT(15 == kTexture2D_GrSLType);
+    GR_STATIC_ASSERT(16 == kSampler_GrSLType);
+    GR_STATIC_ASSERT(17 == kGrSLTypeCount);
 }
 
 static inline bool GrSLTypeIs2DCombinedSamplerType(GrSLType type) {
@@ -232,9 +226,8 @@ static inline bool GrSLTypeIs2DCombinedSamplerType(GrSLType type) {
     return type >= kTexture2DSampler_GrSLType && type <= kTexture2DRectSampler_GrSLType;
 
     GR_STATIC_ASSERT(8 == kTexture2DSampler_GrSLType);
-    GR_STATIC_ASSERT(9 == kTexture2DISampler_GrSLType);
-    GR_STATIC_ASSERT(10 == kTextureExternalSampler_GrSLType);
-    GR_STATIC_ASSERT(11 == kTexture2DRectSampler_GrSLType);
+    GR_STATIC_ASSERT(9 == kTextureExternalSampler_GrSLType);
+    GR_STATIC_ASSERT(10 == kTexture2DRectSampler_GrSLType);
 }
 
 static inline bool GrSLTypeIsCombinedSamplerType(GrSLType type) {
@@ -242,10 +235,9 @@ static inline bool GrSLTypeIsCombinedSamplerType(GrSLType type) {
     return type >= kTexture2DSampler_GrSLType && type <= kTextureBufferSampler_GrSLType;
 
     GR_STATIC_ASSERT(8 == kTexture2DSampler_GrSLType);
-    GR_STATIC_ASSERT(9 == kTexture2DISampler_GrSLType);
-    GR_STATIC_ASSERT(10 == kTextureExternalSampler_GrSLType);
-    GR_STATIC_ASSERT(11 == kTexture2DRectSampler_GrSLType);
-    GR_STATIC_ASSERT(12 == kTextureBufferSampler_GrSLType);
+    GR_STATIC_ASSERT(9 == kTextureExternalSampler_GrSLType);
+    GR_STATIC_ASSERT(10 == kTexture2DRectSampler_GrSLType);
+    GR_STATIC_ASSERT(11 == kTextureBufferSampler_GrSLType);
 }
 
 static inline bool GrSLTypeAcceptsPrecision(GrSLType type) {
index a41be0e..0f77b5a 100644 (file)
@@ -241,23 +241,22 @@ SkString GrCaps::dump() const {
               map_flags_to_string(fMapBufferFlags).c_str());
 
     static const char* kConfigNames[] = {
-        "Unknown",       // kUnknown_GrPixelConfig
-        "Alpha8",        // kAlpha_8_GrPixelConfig,
-        "Index8",        // kIndex_8_GrPixelConfig,
-        "RGB565",        // kRGB_565_GrPixelConfig,
-        "RGBA444",       // kRGBA_4444_GrPixelConfig,
-        "RGBA8888",      // kRGBA_8888_GrPixelConfig,
-        "BGRA8888",      // kBGRA_8888_GrPixelConfig,
-        "SRGBA8888",     // kSRGBA_8888_GrPixelConfig,
-        "SBGRA8888",     // kSBGRA_8888_GrPixelConfig,
-        "RGBA8888_sint", // kRGBA_8888_sint_GrPixelConfig,
-        "ETC1",          // kETC1_GrPixelConfig,
-        "LATC",          // kLATC_GrPixelConfig,
-        "R11EAC",        // kR11_EAC_GrPixelConfig,
-        "ASTC12x12",     // kASTC_12x12_GrPixelConfig,
-        "RGBAFloat",     // kRGBA_float_GrPixelConfig
-        "AlphaHalf",     // kAlpha_half_GrPixelConfig
-        "RGBAHalf",      // kRGBA_half_GrPixelConfig
+        "Unknown",  // kUnknown_GrPixelConfig
+        "Alpha8",   // kAlpha_8_GrPixelConfig,
+        "Index8",   // kIndex_8_GrPixelConfig,
+        "RGB565",   // kRGB_565_GrPixelConfig,
+        "RGBA444",  // kRGBA_4444_GrPixelConfig,
+        "RGBA8888", // kRGBA_8888_GrPixelConfig,
+        "BGRA8888", // kBGRA_8888_GrPixelConfig,
+        "SRGBA8888",// kSRGBA_8888_GrPixelConfig,
+        "SBGRA8888",// kSBGRA_8888_GrPixelConfig,
+        "ETC1",     // kETC1_GrPixelConfig,
+        "LATC",     // kLATC_GrPixelConfig,
+        "R11EAC",   // kR11_EAC_GrPixelConfig,
+        "ASTC12x12",// kASTC_12x12_GrPixelConfig,
+        "RGBAFloat",// kRGBA_float_GrPixelConfig
+        "AlphaHalf",// kAlpha_half_GrPixelConfig
+        "RGBAHalf", // kRGBA_half_GrPixelConfig
     };
     GR_STATIC_ASSERT(0  == kUnknown_GrPixelConfig);
     GR_STATIC_ASSERT(1  == kAlpha_8_GrPixelConfig);
@@ -268,14 +267,13 @@ SkString GrCaps::dump() const {
     GR_STATIC_ASSERT(6  == kBGRA_8888_GrPixelConfig);
     GR_STATIC_ASSERT(7  == kSRGBA_8888_GrPixelConfig);
     GR_STATIC_ASSERT(8  == kSBGRA_8888_GrPixelConfig);
-    GR_STATIC_ASSERT(9  == kRGBA_8888_sint_GrPixelConfig);
-    GR_STATIC_ASSERT(10 == kETC1_GrPixelConfig);
-    GR_STATIC_ASSERT(11 == kLATC_GrPixelConfig);
-    GR_STATIC_ASSERT(12 == kR11_EAC_GrPixelConfig);
-    GR_STATIC_ASSERT(13 == kASTC_12x12_GrPixelConfig);
-    GR_STATIC_ASSERT(14 == kRGBA_float_GrPixelConfig);
-    GR_STATIC_ASSERT(15 == kAlpha_half_GrPixelConfig);
-    GR_STATIC_ASSERT(16 == kRGBA_half_GrPixelConfig);
+    GR_STATIC_ASSERT(9  == kETC1_GrPixelConfig);
+    GR_STATIC_ASSERT(10  == kLATC_GrPixelConfig);
+    GR_STATIC_ASSERT(11  == kR11_EAC_GrPixelConfig);
+    GR_STATIC_ASSERT(12 == kASTC_12x12_GrPixelConfig);
+    GR_STATIC_ASSERT(13 == kRGBA_float_GrPixelConfig);
+    GR_STATIC_ASSERT(14 == kAlpha_half_GrPixelConfig);
+    GR_STATIC_ASSERT(15 == kRGBA_half_GrPixelConfig);
     GR_STATIC_ASSERT(SK_ARRAY_COUNT(kConfigNames) == kGrPixelConfigCnt);
 
     SkASSERT(!this->isConfigRenderable(kUnknown_GrPixelConfig, false));
index 71203d6..ff8de9d 100644 (file)
@@ -266,15 +266,11 @@ bool GrContext::writeSurfacePixels(GrSurface* surface,
 
     bool applyPremulToSrc = false;
     if (kUnpremul_PixelOpsFlag & pixelOpsFlags) {
-        if (!GrPixelConfigIs8888Unorm(srcConfig)) {
+        if (!GrPixelConfigIs8888(srcConfig)) {
             return false;
         }
         applyPremulToSrc = true;
     }
-    // We don't allow conversion between integer configs and float/fixed configs.
-    if (GrPixelConfigIsSint(surface->config()) != GrPixelConfigIsSint(srcConfig)) {
-        return false;
-    }
 
     GrGpu::DrawPreference drawPreference = GrGpu::kNoDraw_DrawPreference;
     // Don't prefer to draw for the conversion (and thereby access a texture from the cache) when
@@ -415,14 +411,10 @@ bool GrContext::readSurfacePixels(GrSurface* src,
     }
 
     bool unpremul = SkToBool(kUnpremul_PixelOpsFlag & flags);
-    if (unpremul && !GrPixelConfigIs8888Unorm(dstConfig)) {
+    if (unpremul && !GrPixelConfigIs8888(dstConfig)) {
         // The unpremul flag is only allowed for 8888 configs.
         return false;
     }
-    // We don't allow conversion between integer configs and float/fixed configs.
-    if (GrPixelConfigIsSint(src->config()) != GrPixelConfigIsSint(dstConfig)) {
-        return false;
-    }
 
     GrGpu::DrawPreference drawPreference = GrGpu::kNoDraw_DrawPreference;
     // Don't prefer to draw for the conversion (and thereby access a texture from the cache) when
@@ -548,11 +540,6 @@ bool GrContext::copySurface(GrSurface* dst, GrSurface* src, const SkIRect& srcRe
     ASSERT_OWNED_RESOURCE(src);
     ASSERT_OWNED_RESOURCE(dst);
 
-    // We don't allow conversion between integer configs and float/fixed configs.
-    if (GrPixelConfigIsSint(dst->config()) != GrPixelConfigIsSint(src->config())) {
-        return false;
-    }
-
     if (!dst->asRenderTarget()) {
         SkIRect clippedSrcRect;
         SkIPoint clippedDstPoint;
@@ -696,7 +683,6 @@ static inline GrPixelConfig GrPixelConfigFallback(GrPixelConfig config) {
         kRGBA_8888_GrPixelConfig,      // kBGRA_8888_GrPixelConfig
         kUnknown_GrPixelConfig,        // kSRGBA_8888_GrPixelConfig
         kSRGBA_8888_GrPixelConfig,     // kSBGRA_8888_GrPixelConfig
-        kUnknown_GrPixelConfig,        // kRGBA_8888_sint_GrPixelConfig
         kUnknown_GrPixelConfig,        // kETC1_GrPixelConfig
         kUnknown_GrPixelConfig,        // kLATC_GrPixelConfig
         kUnknown_GrPixelConfig,        // kR11_EAC_GrPixelConfig
@@ -716,14 +702,13 @@ static inline GrPixelConfig GrPixelConfigFallback(GrPixelConfig config) {
     GR_STATIC_ASSERT(6  == kBGRA_8888_GrPixelConfig);
     GR_STATIC_ASSERT(7  == kSRGBA_8888_GrPixelConfig);
     GR_STATIC_ASSERT(8  == kSBGRA_8888_GrPixelConfig);
-    GR_STATIC_ASSERT(9  == kRGBA_8888_sint_GrPixelConfig);
-    GR_STATIC_ASSERT(10 == kETC1_GrPixelConfig);
-    GR_STATIC_ASSERT(11 == kLATC_GrPixelConfig);
-    GR_STATIC_ASSERT(12 == kR11_EAC_GrPixelConfig);
-    GR_STATIC_ASSERT(13 == kASTC_12x12_GrPixelConfig);
-    GR_STATIC_ASSERT(14 == kRGBA_float_GrPixelConfig);
-    GR_STATIC_ASSERT(15 == kAlpha_half_GrPixelConfig);
-    GR_STATIC_ASSERT(16 == kRGBA_half_GrPixelConfig);
+    GR_STATIC_ASSERT(9  == kETC1_GrPixelConfig);
+    GR_STATIC_ASSERT(10  == kLATC_GrPixelConfig);
+    GR_STATIC_ASSERT(11  == kR11_EAC_GrPixelConfig);
+    GR_STATIC_ASSERT(12 == kASTC_12x12_GrPixelConfig);
+    GR_STATIC_ASSERT(13 == kRGBA_float_GrPixelConfig);
+    GR_STATIC_ASSERT(14 == kAlpha_half_GrPixelConfig);
+    GR_STATIC_ASSERT(15 == kRGBA_half_GrPixelConfig);
     GR_STATIC_ASSERT(SK_ARRAY_COUNT(kFallback) == kGrPixelConfigCnt);
 }
 
index b775cf0..1b9be53 100644 (file)
@@ -104,10 +104,6 @@ static bool check_texture_creation_params(const GrCaps& caps, const GrSurfaceDes
         return false;
     }
 
-    if (GrPixelConfigIsSint(desc.fConfig) && texels.count() > 1) {
-        return false;
-    }
-
     *isRT = SkToBool(desc.fFlags & kRenderTarget_GrSurfaceFlag);
     if (*isRT && !caps.isConfigRenderable(desc.fConfig, desc.fSampleCnt > 0)) {
         return false;
@@ -266,13 +262,6 @@ bool GrGpu::copySurface(GrSurface* dst,
                         const SkIPoint& dstPoint) {
     SkASSERT(dst && src);
     this->handleDirtyContext();
-    // We don't allow conversion between integer configs and float/fixed configs.
-    if (GrPixelConfigIsSint(dst->config()) != GrPixelConfigIsSint(src->config())) {
-        return false;
-    }
-    if (GrPixelConfigIsCompressed(dst->config())) {
-        return false;
-    }
     return this->onCopySurface(dst, src, srcRect, dstPoint);
 }
 
@@ -281,14 +270,8 @@ bool GrGpu::getReadPixelsInfo(GrSurface* srcSurface, int width, int height, size
                               ReadPixelTempDrawInfo* tempDrawInfo) {
     SkASSERT(drawPreference);
     SkASSERT(tempDrawInfo);
-    SkASSERT(srcSurface);
     SkASSERT(kGpuPrefersDraw_DrawPreference != *drawPreference);
 
-    // We don't allow conversion between integer configs and float/fixed configs.
-    if (GrPixelConfigIsSint(srcSurface->config()) != GrPixelConfigIsSint(readConfig)) {
-        return false;
-    }
-
     // We currently do not support reading into a compressed buffer
     if (GrPixelConfigIsCompressed(readConfig)) {
         return false;
@@ -322,7 +305,6 @@ bool GrGpu::getWritePixelsInfo(GrSurface* dstSurface, int width, int height,
                                WritePixelTempDrawInfo* tempDrawInfo) {
     SkASSERT(drawPreference);
     SkASSERT(tempDrawInfo);
-    SkASSERT(dstSurface);
     SkASSERT(kGpuPrefersDraw_DrawPreference != *drawPreference);
 
     if (GrPixelConfigIsCompressed(dstSurface->desc().fConfig) &&
@@ -330,11 +312,6 @@ bool GrGpu::getWritePixelsInfo(GrSurface* dstSurface, int width, int height,
         return false;
     }
 
-    // We don't allow conversion between integer configs and float/fixed configs.
-    if (GrPixelConfigIsSint(dstSurface->config()) != GrPixelConfigIsSint(srcConfig)) {
-        return false;
-    }
-
     if (SkToBool(dstSurface->asRenderTarget())) {
         if (this->caps()->useDrawInsteadOfAllRenderTargetWrites()) {
             ElevateDrawPreference(drawPreference, kRequireDraw_DrawPreference);
@@ -366,12 +343,7 @@ bool GrGpu::readPixels(GrSurface* surface,
                        int left, int top, int width, int height,
                        GrPixelConfig config, void* buffer,
                        size_t rowBytes) {
-    SkASSERT(surface);
-
-    // We don't allow conversion between integer configs and float/fixed configs.
-    if (GrPixelConfigIsSint(surface->config()) != GrPixelConfigIsSint(config)) {
-        return false;
-    }
+    this->handleDirtyContext();
 
     // We cannot read pixels into a compressed buffer
     if (GrPixelConfigIsCompressed(config)) {
@@ -386,8 +358,6 @@ bool GrGpu::readPixels(GrSurface* surface,
         return false;
     }
 
-    this->handleDirtyContext();
-
     return this->onReadPixels(surface,
                               left, top, width, height,
                               config, buffer,
@@ -397,18 +367,15 @@ bool GrGpu::readPixels(GrSurface* surface,
 bool GrGpu::writePixels(GrSurface* surface,
                         int left, int top, int width, int height,
                         GrPixelConfig config, const SkTArray<GrMipLevel>& texels) {
-    SkASSERT(surface);
+    if (!surface) {
+        return false;
+    }
     for (int currentMipLevel = 0; currentMipLevel < texels.count(); currentMipLevel++) {
         if (!texels[currentMipLevel].fPixels ) {
             return false;
         }
     }
 
-    // We don't allow conversion between integer configs and float/fixed configs.
-    if (GrPixelConfigIsSint(surface->config()) != GrPixelConfigIsSint(config)) {
-        return false;
-    }
-
     this->handleDirtyContext();
     if (this->onWritePixels(surface, left, top, width, height, config, texels)) {
         SkIRect rect = SkIRect::MakeXYWH(left, top, width, height);
@@ -439,11 +406,6 @@ bool GrGpu::transferPixels(GrSurface* surface,
     SkASSERT(transferBuffer);
     SkASSERT(fence);
 
-    // We don't allow conversion between integer configs and float/fixed configs.
-    if (GrPixelConfigIsSint(surface->config()) != GrPixelConfigIsSint(config)) {
-        return false;
-    }
-
     this->handleDirtyContext();
     if (this->onTransferPixels(surface, left, top, width, height, config,
                                transferBuffer, offset, rowBytes)) {
index b49c2c9..dba24b5 100644 (file)
@@ -48,9 +48,7 @@ GrTexture* GrTextureProvider::createMipMappedTexture(const GrSurfaceDesc& desc,
             return nullptr;
         }
     }
-    if (mipLevelCount > 1 && GrPixelConfigIsSint(desc.fConfig)) {
-        return nullptr;
-    }
+
     if ((desc.fFlags & kRenderTarget_GrSurfaceFlag) &&
         !fGpu->caps()->isConfigRenderable(desc.fConfig, desc.fSampleCnt > 0)) {
         return nullptr;
@@ -86,10 +84,10 @@ GrTexture* GrTextureProvider::createTexture(const GrSurfaceDesc& desc, SkBudgete
     GrMipLevel* texels = nullptr;
     int levelCount = 0;
     if (srcData) {
-        tempTexels.fPixels = srcData;
-        tempTexels.fRowBytes = rowBytes;
-        texels = &tempTexels;
-        levelCount = 1;
+      tempTexels.fPixels = srcData;
+      tempTexels.fRowBytes = rowBytes;
+      texels = &tempTexels;
+      levelCount = 1;
     }
     return this->createMipMappedTexture(desc, budgeted, texels, levelCount);
 }
index 7246098..a59ed38 100644 (file)
@@ -63,12 +63,7 @@ GrBatch* GrCopySurfaceBatch::Create(GrSurface* dst, GrSurface* src, const SkIRec
                                     const SkIPoint& dstPoint) {
     SkASSERT(dst);
     SkASSERT(src);
-    if (GrPixelConfigIsSint(dst->config()) != GrPixelConfigIsSint(src->config())) {
-        return nullptr;
-    }
-    if (GrPixelConfigIsCompressed(dst->config())) {
-        return nullptr;
-    }
+
     SkIRect clippedSrcRect;
     SkIPoint clippedDstPoint;
     // If the rect is outside the src or dst then we've already succeeded.
index ed3c381..a37d0e0 100644 (file)
@@ -863,10 +863,6 @@ bool GrGLCaps::readPixelsSupported(GrPixelConfig surfaceConfig,
         return false;
     }
 
-    if (GrPixelConfigIsSint(surfaceConfig) != GrPixelConfigIsSint(readConfig)) {
-        return false;
-    }
-
     GrGLenum readFormat;
     GrGLenum readType;
     if (!this->getReadPixelsFormat(surfaceConfig, readConfig, &readFormat, &readType)) {
@@ -878,11 +874,8 @@ bool GrGLCaps::readPixelsSupported(GrPixelConfig surfaceConfig,
         // the manual (https://www.opengl.org/sdk/docs/man/) says only these formats are allowed:
         // GL_STENCIL_INDEX, GL_DEPTH_COMPONENT, GL_DEPTH_STENCIL, GL_RED, GL_GREEN, GL_BLUE,
         // GL_RGB, GL_BGR, GL_RGBA, and GL_BGRA. We check for the subset that we would use.
-        // The manual does not seem to fully match the spec as the spec allows integer formats
-        // when the bound color buffer is an integer buffer. It doesn't specify which integer
-        // formats are allowed, so perhaps all of them are. We only use GL_RGBA_INTEGER currently.
         if (readFormat != GR_GL_RED && readFormat != GR_GL_RGB && readFormat != GR_GL_RGBA &&
-            readFormat != GR_GL_BGRA && readFormat != GR_GL_RGBA_INTEGER) {
+            readFormat != GR_GL_BGRA) {
             return false;
         }
         // There is also a set of allowed types, but all the types we use are in the set:
@@ -897,22 +890,16 @@ bool GrGLCaps::readPixelsSupported(GrPixelConfig surfaceConfig,
     }
 
     // See Section 16.1.2 in the ES 3.2 specification.
-    switch (fConfigTable[surfaceConfig].fFormatType) {
-        case kNormalizedFixedPoint_FormatType:
-            if (GR_GL_RGBA == readFormat && GR_GL_UNSIGNED_BYTE == readType) {
-                return true;
-            }
-            break;
-        case kInteger_FormatType:
-            if (GR_GL_RGBA_INTEGER == readFormat && GR_GL_INT == readType) {
-                return true;
-            }
-            break;
-        case kFloat_FormatType:
-            if (GR_GL_RGBA == readFormat && GR_GL_FLOAT == readType) {
-                return true;
-            }
-            break;
+
+    if (kNormalizedFixedPoint_FormatType == fConfigTable[surfaceConfig].fFormatType) {
+        if (GR_GL_RGBA == readFormat && GR_GL_UNSIGNED_BYTE == readType) {
+            return true;
+        }
+    } else {
+        SkASSERT(kFloat_FormatType == fConfigTable[surfaceConfig].fFormatType);
+        if (GR_GL_RGBA == readFormat && GR_GL_FLOAT == readType) {
+            return true;
+        }
     }
 
     if (0 == fConfigTable[surfaceConfig].fSecondReadPixelsFormat.fFormat) {
@@ -1582,33 +1569,6 @@ void GrGLCaps::initConfigTable(const GrGLContextInfo& ctxInfo, const GrGLInterfa
     }
     fConfigTable[kSBGRA_8888_GrPixelConfig].fSwizzle = GrSwizzle::RGBA();
 
-    bool hasIntegerTextures;
-    if (standard == kGL_GrGLStandard) {
-        hasIntegerTextures = version >= GR_GL_VER(3, 0) ||
-                             ctxInfo.hasExtension("GL_EXT_texture_integer");
-    } else {
-        hasIntegerTextures = (version >= GR_GL_VER(3, 0));
-    }
-    // We may have limited GLSL to an earlier version that doesn't have integer sampler types.
-    if (ctxInfo.glslGeneration() == k110_GrGLSLGeneration) {
-        hasIntegerTextures = false;
-    }
-    fConfigTable[kRGBA_8888_sint_GrPixelConfig].fFormats.fBaseInternalFormat  = GR_GL_RGBA_INTEGER;
-    fConfigTable[kRGBA_8888_sint_GrPixelConfig].fFormats.fSizedInternalFormat = GR_GL_RGBA8I;
-    fConfigTable[kRGBA_8888_sint_GrPixelConfig].fFormats.fExternalFormat[kOther_ExternalFormatUsage] = GR_GL_RGBA_INTEGER;
-    fConfigTable[kRGBA_8888_sint_GrPixelConfig].fFormats.fExternalType = GR_GL_BYTE;
-    fConfigTable[kRGBA_8888_sint_GrPixelConfig].fFormatType = kInteger_FormatType;
-    // We currently only support using integer textures as srcs, not for rendering (even though GL
-    // allows it).
-    if (hasIntegerTextures) {
-        fConfigTable[kRGBA_8888_sint_GrPixelConfig].fFlags = ConfigInfo::kTextureable_Flag |
-                                                             ConfigInfo::kFBOColorAttachment_Flag;
-        if (texStorageSupported) {
-            fConfigTable[kRGBA_8888_sint_GrPixelConfig].fFlags |=
-                ConfigInfo::kCanUseTexStorage_Flag;
-        }
-    }
-
     fConfigTable[kRGB_565_GrPixelConfig].fFormats.fBaseInternalFormat = GR_GL_RGB;
     if (this->ES2CompatibilitySupport()) {
         fConfigTable[kRGB_565_GrPixelConfig].fFormats.fSizedInternalFormat = GR_GL_RGB565;
index 496635d..c277323 100644 (file)
@@ -425,7 +425,6 @@ private:
     enum FormatType {
         kNormalizedFixedPoint_FormatType,
         kFloat_FormatType,
-        kInteger_FormatType,
     };
 
     struct ReadPixelsFormat {
index 8f739cc..8dc7af1 100644 (file)
 #define GR_GL_LINE_WIDTH_GRANULARITY         0x0B23
 #define GR_GL_LINE_WIDTH_RANGE               0x0B22
 
-/* Unsized formats */
-#define GR_GL_STENCIL_INDEX                  0x1901
+/* PixelFormat */
 #define GR_GL_DEPTH_COMPONENT                0x1902
-#define GR_GL_DEPTH_STENCIL                  0x84F9
 #define GR_GL_RED                            0x1903
-#define GR_GL_RED_INTEGER                    0x8D94
 #define GR_GL_GREEN                          0x1904
 #define GR_GL_BLUE                           0x1905
 #define GR_GL_ALPHA                          0x1906
-#define GR_GL_LUMINANCE                      0x1909
-#define GR_GL_LUMINANCE_ALPHA                0x190A
-#define GR_GL_RG_INTEGER                     0x8228
 #define GR_GL_RGB                            0x1907
-#define GR_GL_RGB_INTEGER                    0x8D98
-#define GR_GL_SRGB                           0x8C40
 #define GR_GL_RGBA                           0x1908
-#define GR_GL_SRGB_ALPHA                     0x8C42
-#define GR_GL_RGBA_INTEGER                   0x8D99
 #define GR_GL_BGRA                           0x80E1
+#define GR_GL_LUMINANCE                      0x1909
+#define GR_GL_LUMINANCE_ALPHA                0x190A
+#define GR_GL_PALETTE8_RGBA8                 0x8B96
+#define GR_GL_ALPHA8                         0x803C
 
-/* Stencil index sized formats */
-#define GR_GL_STENCIL_INDEX4                 0x8D47
-#define GR_GL_STENCIL_INDEX8                 0x8D48
-#define GR_GL_STENCIL_INDEX16                0x8D49
-
-/* Depth component sized formats */
-#define GR_GL_DEPTH_COMPONENT16              0x81A5
-
-/* Depth stencil sized formats */
-#define GR_GL_DEPTH24_STENCIL8               0x88F0
-
-/* Red sized formats */
 #define GR_GL_R8                             0x8229
-#define GR_GL_R16                            0x822A
-#define GR_GL_R16F                           0x822D
-#define GR_GL_R32F                           0x822E
-
-/* Red integer sized formats */
-#define GR_GL_R8I                            0x8231
-#define GR_GL_R8UI                           0x8232
-#define GR_GL_R16I                           0x8233
-#define GR_GL_R16UI                          0x8234
-#define GR_GL_R32I                           0x8235
-#define GR_GL_R32UI                          0x8236
-
-/* Alpha sized formats */
-#define GR_GL_ALPHA8                         0x803C
-#define GR_GL_ALPHA16                        0x803E
-#define GR_GL_ALPHA16F                       0x881C
-#define GR_GL_ALPHA32F                       0x8816
-
-/* Alpha integer sized formats */
-#define GR_GL_ALPHA8I                        0x8D90
-#define GR_GL_ALPHA8UI                       0x8D7E
-#define GR_GL_ALPHA16I                       0x8D8A
-#define GR_GL_ALPHA16UI                      0x8D78
-#define GR_GL_ALPHA32I                       0x8D84
-#define GR_GL_ALPHA32UI                      0x8D72
-
-/* RG sized formats */
-#define GR_GL_RG8                            0x822B
-#define GR_GL_RG16                           0x822C
 #define GR_GL_R16F                           0x822D
-#define GR_GL_R32F                           0x822E
-
-/* RG sized integer formats */
-#define GR_GL_RG8I                           0x8237
-#define GR_GL_RG8UI                          0x8238
-#define GR_GL_RG16I                          0x8239
-#define GR_GL_RG16UI                         0x823A
-#define GR_GL_RG32I                          0x823B
-#define GR_GL_RG32UI                         0x823C
-
-/* RGB sized formats */
-#define GR_GL_RGB5                           0x8050
-#define GR_GL_RGB565                         0x8D62
-#define GR_GL_RGB8                           0x8051
-#define GR_GL_SRGB8                          0x8C41
-
-/* RGB integer sized formats */
-#define GR_GL_RGB8I                          0x8D8F
-#define GR_GL_RGB8UI                         0x8D7D
-#define GR_GL_RGB16I                         0x8D89
-#define GR_GL_RGB16UI                        0x8D77
-#define GR_GL_RGB32I                         0x8D83
-#define GR_GL_RGB32UI                        0x8D71
-
-/* RGBA sized formats */
-#define GR_GL_RGBA4                          0x8056
-#define GR_GL_RGB5_A1                        0x8057
-#define GR_GL_PALETTE8_RGBA8                 0x8B96
-#define GR_GL_RGBA8                          0x8058
-#define GR_GL_SRGB8_ALPHA8                   0x8C43
 #define GR_GL_RGBA16F                        0x881A
-#define GR_GL_RGBA32F                        0x8814
-
-/* RGBA integer sized formats */
-#define GR_GL_RGBA8I                         0x8D8E
-#define GR_GL_RGBA8UI                        0x8D7C
-#define GR_GL_RGBA16I                        0x8D88
-#define GR_GL_RGBA16UI                       0x8D76
-#define GR_GL_RGBA32I                        0x8D82
-#define GR_GL_RGBA32UI                       0x8D70
-
-/* BGRA sized formats */
-#define GR_GL_BGRA8                          0x93A1
+#define GR_GL_ALPHA16F                       0x881C
 
 /* PixelType */
 /*      GL_UNSIGNED_BYTE */
 
 #define GR_GL_RENDERBUFFER                   0x8D41
 
+#define GR_GL_RGBA4                          0x8056
+#define GR_GL_RGB5_A1                        0x8057
+#define GR_GL_RGB565                         0x8D62
+#define GR_GL_RGBA8                          0x8058
+#define GR_GL_RGBA32F                        0x8814
+#define GR_GL_RGB5                           0x8050
+#define GR_GL_RGB8                           0x8051
+#define GR_GL_BGRA8                          0x93A1
+#define GR_GL_SRGB                           0x8C40
+#define GR_GL_SRGB8                          0x8C41
+#define GR_GL_SRGB_ALPHA                     0x8C42
+#define GR_GL_SRGB8_ALPHA8                   0x8C43
+#define GR_GL_DEPTH_COMPONENT16              0x81A5
+#define GR_GL_STENCIL_INDEX                  0x1901
+#define GR_GL_STENCIL_INDEX4                 0x8D47
+#define GR_GL_STENCIL_INDEX8                 0x8D48
+#define GR_GL_STENCIL_INDEX16                0x8D49
+#define GR_GL_DEPTH_STENCIL                  0x84F9
+#define GR_GL_DEPTH24_STENCIL8               0x88F0
+
 #define GR_GL_MAX_SAMPLES                    0x8D57
 // GL_IMG_multisampled_render_to_texture uses a different value for GL_MAX_SAMPLES
 #define GR_GL_MAX_SAMPLES_IMG                0x9135
index 63f0c28..9ccd073 100644 (file)
@@ -922,7 +922,6 @@ static inline GrGLint config_alignment(GrPixelConfig config) {
         case kBGRA_8888_GrPixelConfig:
         case kSRGBA_8888_GrPixelConfig:
         case kSBGRA_8888_GrPixelConfig:
-        case kRGBA_8888_sint_GrPixelConfig:
         case kRGBA_float_GrPixelConfig:
             return 4;
         default:
@@ -972,14 +971,14 @@ static bool allocate_and_populate_uncompressed_texture(const GrSurfaceDesc& desc
     // This means if we may later want to add mipmaps, we cannot use TexStorage.
     // Right now, we cannot know if we will later add mipmaps or not.
     // The only time we can use TexStorage is when we already have the
-    // mipmaps or are using a format incompatible with MIP maps.
-    useTexStorage &= texels.count() > 1 || GrPixelConfigIsSint(desc.fConfig);
+    // mipmaps.
+    useTexStorage &= texels.count() > 1;
 
     if (useTexStorage) {
         // We never resize or change formats of textures.
         GL_ALLOC_CALL(&interface,
                       TexStorage2D(target,
-                                   SkTMax(texels.count(), 1),
+                                   texels.count(),
                                    internalFormatForTexStorage,
                                    desc.fWidth, desc.fHeight));
         GrGLenum error = check_alloc_error(desc, &interface);
@@ -3489,9 +3488,6 @@ static inline bool can_blit_framebuffer_for_copy_surface(const GrSurface* dst,
         !gpu->glCaps().canConfigBeFBOColorAttachment(src->config())) {
         return false;
     }
-    // Blits are not allowed between int color buffers and float/fixed color buffers. GrGpu should
-    // have filtered such cases out.
-    SkASSERT(GrPixelConfigIsSint(dst->config()) == GrPixelConfigIsSint(src->config()));
     const GrGLTexture* dstTex = static_cast<const GrGLTexture*>(dst->asTexture());
     const GrGLTexture* srcTex = static_cast<const GrGLTexture*>(dst->asTexture());
     const GrRenderTarget* dstRT = dst->asRenderTarget();
@@ -3727,10 +3723,19 @@ bool GrGLGpu::onCopySurface(GrSurface* dst,
     return false;
 }
 
-bool GrGLGpu::createCopyProgram(GrTexture* srcTex) {
-    int progIdx = TextureToCopyProgramIdx(srcTex);
+bool GrGLGpu::createCopyProgram(int progIdx) {
     const GrGLSLCaps* glslCaps = this->glCaps().glslCaps();
-    GrSLType samplerType = srcTex->texturePriv().samplerType();
+    static const GrSLType kSamplerTypes[3] = { kTexture2DSampler_GrSLType,
+                                               kTextureExternalSampler_GrSLType,
+                                               kTexture2DRectSampler_GrSLType };
+    if (kTextureExternalSampler_GrSLType == kSamplerTypes[progIdx] &&
+        !this->glCaps().glslCaps()->externalTextureSupport()) {
+        return false;
+    }
+    if (kTexture2DRectSampler_GrSLType == kSamplerTypes[progIdx] &&
+        !this->glCaps().rectangleTextureSupport()) {
+        return false;
+    }
 
     if (!fCopyProgramArrayBuffer) {
         static const GrGLfloat vdata[] = {
@@ -3758,7 +3763,7 @@ bool GrGLGpu::createCopyProgram(GrTexture* srcTex) {
                                  GrShaderVar::kUniform_TypeModifier);
     GrGLSLShaderVar uPosXform("u_posXform", kVec4f_GrSLType,
                               GrShaderVar::kUniform_TypeModifier);
-    GrGLSLShaderVar uTexture("u_texture", samplerType,
+    GrGLSLShaderVar uTexture("u_texture", kSamplerTypes[progIdx],
                              GrShaderVar::kUniform_TypeModifier);
     GrGLSLShaderVar vTexCoord("v_texCoord", kVec2f_GrSLType,
                               GrShaderVar::kVaryingOut_TypeModifier);
@@ -3797,7 +3802,7 @@ bool GrGLGpu::createCopyProgram(GrTexture* srcTex) {
             fshaderTxt.appendf("#extension %s : require\n", extension);
         }
     }
-    if (samplerType == kTextureExternalSampler_GrSLType) {
+    if (kSamplerTypes[progIdx] == kTextureExternalSampler_GrSLType) {
         fshaderTxt.appendf("#extension %s : require\n",
                            glslCaps->externalTextureExtensionString());
     }
@@ -3813,7 +3818,7 @@ bool GrGLGpu::createCopyProgram(GrTexture* srcTex) {
         "void main() {"
         "  sk_FragColor = %s(u_texture, v_texCoord);"
         "}",
-        GrGLSLTexture2DFunctionName(kVec2f_GrSLType, samplerType, this->glslGeneration())
+        GrGLSLTexture2DFunctionName(kVec2f_GrSLType, kSamplerTypes[progIdx], this->glslGeneration())
     );
 
     const char* str;
@@ -4165,10 +4170,10 @@ bool GrGLGpu::copySurfaceAsDraw(GrSurface* dst,
                                 const SkIRect& srcRect,
                                 const SkIPoint& dstPoint) {
     GrGLTexture* srcTex = static_cast<GrGLTexture*>(src->asTexture());
-    int progIdx = TextureToCopyProgramIdx(srcTex);
+    int progIdx = TextureTargetToCopyProgramIdx(srcTex->target());
 
     if (!fCopyPrograms[progIdx].fProgram) {
-        if (!this->createCopyProgram(srcTex)) {
+        if (!this->createCopyProgram(progIdx)) {
             SkDebugf("Failed to create copy program.\n");
             return false;
         }
@@ -4354,7 +4359,6 @@ bool GrGLGpu::copySurfaceAsBlitFramebuffer(GrSurface* dst,
 // Uses draw calls to do a series of downsample operations to successive mips.
 // If this returns false, then the calling code falls back to using glGenerateMipmap.
 bool GrGLGpu::generateMipmap(GrGLTexture* texture, bool gammaCorrect) {
-    SkASSERT(!GrPixelConfigIsSint(texture->config()));
     // Our iterative downsample requires the ability to limit which level we're sampling:
     if (!this->glCaps().doManualMipmapping()) {
         return false;
index 0c9d373..32ce979 100644 (file)
@@ -17,7 +17,7 @@
 #include "GrGLTexture.h"
 #include "GrGLVertexArray.h"
 #include "GrGpu.h"
-#include "GrTexturePriv.h"
+#include "GrTypes.h"
 #include "GrWindowRectsState.h"
 #include "GrXferProcessor.h"
 #include "SkTArray.h"
@@ -395,7 +395,7 @@ private:
 
     sk_sp<GrGLContext>          fGLContext;
 
-    bool createCopyProgram(GrTexture* srcTexture);
+    bool createCopyProgram(int progIdx);
     bool createMipmapProgram(int progIdx);
     bool createWireRectProgram();
     bool createPLSSetupProgram();
@@ -589,13 +589,13 @@ private:
     int                         fHWNumRasterSamples;
     ///@}
 
-    /** IDs for copy surface program. (4 sampler types) */
+    /** IDs for copy surface program. */
     struct {
         GrGLuint    fProgram;
         GrGLint     fTextureUniform;
         GrGLint     fTexCoordXformUniform;
         GrGLint     fPosXformUniform;
-    }                           fCopyPrograms[4];
+    }                           fCopyPrograms[3];
     sk_sp<GrGLBuffer>           fCopyProgramArrayBuffer;
 
     /** IDs for texture mipmap program. (4 filter configurations) */
@@ -613,18 +613,16 @@ private:
     }                           fWireRectProgram;
     sk_sp<GrGLBuffer>           fWireRectArrayBuffer;
 
-    static int TextureToCopyProgramIdx(GrTexture* texture) {
-        switch (texture->texturePriv().samplerType()) {
-            case kTexture2DSampler_GrSLType:
+    static int TextureTargetToCopyProgramIdx(GrGLenum target) {
+        switch (target) {
+            case GR_GL_TEXTURE_2D:
                 return 0;
-            case kTexture2DISampler_GrSLType:
+            case GR_GL_TEXTURE_EXTERNAL:
                 return 1;
-            case kTexture2DRectSampler_GrSLType:
+            case GR_GL_TEXTURE_RECTANGLE:
                 return 2;
-            case kTextureExternalSampler_GrSLType:
-                return 3;
             default:
-                SkFAIL("Unexpected samper type");
+                SkFAIL("Unexpected texture target type.");
                 return 0;
         }
     }
index 9f213fb..c45d08f 100644 (file)
 #define GPUGL static_cast<GrGLGpu*>(this->getGpu())
 #define GL_CALL(X) GR_GL_CALL(GPUGL->glInterface(), X)
 
-static inline GrSLType sampler_type(const GrGLTexture::IDDesc& idDesc, GrPixelConfig config,
-                                    const GrGLGpu* gpu) {
+static inline GrSLType sampler_type(const GrGLTexture::IDDesc& idDesc, const GrGLGpu* gpu) {
     if (idDesc.fInfo.fTarget == GR_GL_TEXTURE_EXTERNAL) {
         SkASSERT(gpu->glCaps().glslCaps()->externalTextureSupport());
-        SkASSERT(!GrPixelConfigIsSint(config));
         return kTextureExternalSampler_GrSLType;
     } else if (idDesc.fInfo.fTarget == GR_GL_TEXTURE_RECTANGLE) {
         SkASSERT(gpu->glCaps().rectangleTextureSupport());
-        SkASSERT(!GrPixelConfigIsSint(config));
         return kTexture2DRectSampler_GrSLType;
-    } else if (GrPixelConfigIsSint(config)) {
-        return kTexture2DISampler_GrSLType;
     } else {
         SkASSERT(idDesc.fInfo.fTarget == GR_GL_TEXTURE_2D);
         return kTexture2DSampler_GrSLType;
     }
 }
 
-static inline GrTextureParams::FilterMode highest_filter_mode(const GrGLTexture::IDDesc& idDesc,
-                                                              GrPixelConfig config) {
-    if (GrPixelConfigIsSint(config)) {
-        // Integer textures in GL can use GL_NEAREST_MIPMAP_NEAREST. This is a mode we don't support
-        // and don't currently have a use for.
-        return GrTextureParams::kNone_FilterMode;
-    }
+static inline GrTextureParams::FilterMode highest_filter_mode(const GrGLTexture::IDDesc& idDesc) {
     if (idDesc.fInfo.fTarget == GR_GL_TEXTURE_RECTANGLE ||
         idDesc.fInfo.fTarget == GR_GL_TEXTURE_EXTERNAL) {
         return GrTextureParams::kBilerp_FilterMode;
@@ -48,8 +37,7 @@ static inline GrTextureParams::FilterMode highest_filter_mode(const GrGLTexture:
 GrGLTexture::GrGLTexture(GrGLGpu* gpu, SkBudgeted budgeted, const GrSurfaceDesc& desc,
                          const IDDesc& idDesc)
     : GrSurface(gpu, desc)
-    , INHERITED(gpu, desc, sampler_type(idDesc, desc.fConfig, gpu),
-                highest_filter_mode(idDesc, desc.fConfig), false) {
+    , INHERITED(gpu, desc, sampler_type(idDesc, gpu), highest_filter_mode(idDesc), false) {
     this->init(desc, idDesc);
     this->registerWithCache(budgeted);
 }
@@ -58,8 +46,7 @@ GrGLTexture::GrGLTexture(GrGLGpu* gpu, SkBudgeted budgeted, const GrSurfaceDesc&
                          const IDDesc& idDesc,
                          bool wasMipMapDataProvided)
     : GrSurface(gpu, desc)
-    , INHERITED(gpu, desc, sampler_type(idDesc, desc.fConfig, gpu),
-                highest_filter_mode(idDesc, desc.fConfig),
+    , INHERITED(gpu, desc, sampler_type(idDesc, gpu), highest_filter_mode(idDesc),
                 wasMipMapDataProvided) {
     this->init(desc, idDesc);
     this->registerWithCache(budgeted);
@@ -67,8 +54,7 @@ GrGLTexture::GrGLTexture(GrGLGpu* gpu, SkBudgeted budgeted, const GrSurfaceDesc&
 
 GrGLTexture::GrGLTexture(GrGLGpu* gpu, Wrapped, const GrSurfaceDesc& desc, const IDDesc& idDesc)
     : GrSurface(gpu, desc)
-    , INHERITED(gpu, desc, sampler_type(idDesc, desc.fConfig, gpu),
-                highest_filter_mode(idDesc, desc.fConfig), false) {
+    , INHERITED(gpu, desc, sampler_type(idDesc, gpu), highest_filter_mode(idDesc), false) {
     this->init(desc, idDesc);
     this->registerWithCacheWrapped();
 }
@@ -76,8 +62,7 @@ GrGLTexture::GrGLTexture(GrGLGpu* gpu, Wrapped, const GrSurfaceDesc& desc, const
 GrGLTexture::GrGLTexture(GrGLGpu* gpu, const GrSurfaceDesc& desc, const IDDesc& idDesc,
                          bool wasMipMapDataProvided)
     : GrSurface(gpu, desc)
-    , INHERITED(gpu, desc, sampler_type(idDesc, desc.fConfig, gpu),
-                highest_filter_mode(idDesc, desc.fConfig),
+    , INHERITED(gpu, desc, sampler_type(idDesc, gpu), highest_filter_mode(idDesc),
                 wasMipMapDataProvided) {
     this->init(desc, idDesc);
 }
index e6559fd..e4e165b 100644 (file)
@@ -124,8 +124,6 @@ static inline const char* GrGLSLTypeString(GrSLType t) {
             return "mat4";
         case kTexture2DSampler_GrSLType:
             return "sampler2D";
-        case kTexture2DISampler_GrSLType:
-            return "isampler2D";
         case kTextureExternalSampler_GrSLType:
             return "samplerExternalOES";
         case kTexture2DRectSampler_GrSLType:
@@ -142,9 +140,10 @@ static inline const char* GrGLSLTypeString(GrSLType t) {
             return "texture2D";
         case kSampler_GrSLType:
             return "sampler";
+        default:
+            SkFAIL("Unknown shader var type.");
+            return ""; // suppress warning
     }
-    SkFAIL("Unknown shader var type.");
-    return ""; // suppress warning
 }
 
 /** A generic base-class representing a GLSL expression.
index 8e464b0..b33e308 100644 (file)
@@ -129,25 +129,24 @@ void GrGLSLCaps::initSamplerPrecisionTable() {
         }
 
         uint8_t* table = fSamplerPrecisions[visibility];
-        table[kUnknown_GrPixelConfig]        = kDefault_GrSLPrecision;
-        table[kAlpha_8_GrPixelConfig]        = lowp;
-        table[kIndex_8_GrPixelConfig]        = lowp;
-        table[kRGB_565_GrPixelConfig]        = lowp;
-        table[kRGBA_4444_GrPixelConfig]      = lowp;
-        table[kRGBA_8888_GrPixelConfig]      = lowp;
-        table[kBGRA_8888_GrPixelConfig]      = lowp;
-        table[kSRGBA_8888_GrPixelConfig]     = lowp;
-        table[kSBGRA_8888_GrPixelConfig]     = lowp;
-        table[kRGBA_8888_sint_GrPixelConfig] = lowp;
-        table[kETC1_GrPixelConfig]           = lowp;
-        table[kLATC_GrPixelConfig]           = lowp;
-        table[kR11_EAC_GrPixelConfig]        = lowp;
-        table[kASTC_12x12_GrPixelConfig]     = lowp;
-        table[kRGBA_float_GrPixelConfig]     = kHigh_GrSLPrecision;
-        table[kAlpha_half_GrPixelConfig]     = mediump;
-        table[kRGBA_half_GrPixelConfig]      = mediump;
-
-        GR_STATIC_ASSERT(17 == kGrPixelConfigCnt);
+        table[kUnknown_GrPixelConfig]    = kDefault_GrSLPrecision;
+        table[kAlpha_8_GrPixelConfig]    = lowp;
+        table[kIndex_8_GrPixelConfig]    = lowp;
+        table[kRGB_565_GrPixelConfig]    = lowp;
+        table[kRGBA_4444_GrPixelConfig]  = lowp;
+        table[kRGBA_8888_GrPixelConfig]  = lowp;
+        table[kBGRA_8888_GrPixelConfig]  = lowp;
+        table[kSRGBA_8888_GrPixelConfig] = lowp;
+        table[kSBGRA_8888_GrPixelConfig] = lowp;
+        table[kETC1_GrPixelConfig]       = lowp;
+        table[kLATC_GrPixelConfig]       = lowp;
+        table[kR11_EAC_GrPixelConfig]    = lowp;
+        table[kASTC_12x12_GrPixelConfig] = lowp;
+        table[kRGBA_float_GrPixelConfig] = kHigh_GrSLPrecision;
+        table[kAlpha_half_GrPixelConfig] = mediump;
+        table[kRGBA_half_GrPixelConfig]  = mediump;
+
+        GR_STATIC_ASSERT(16 == kGrPixelConfigCnt);
     }
 }
 
index 618afa5..ac409a3 100644 (file)
@@ -15,6 +15,8 @@
 
 class GrGLSLCaps : public GrShaderCaps {
 public:
+
+
     /**
     * Indicates how GLSL must interact with advanced blend equations. The KHR extension requires
     * special layout qualifiers in the fragment shader.
index 7c11b9d..4a6e977 100644 (file)
@@ -25,11 +25,10 @@ uint32_t grsltype_to_alignment_mask(GrSLType type) {
         0x7, // kMat22f_GrSLType
         0xF, // kMat33f_GrSLType
         0xF, // kMat44f_GrSLType
-        0x0, // kTexture2DSampler_GrSLType, should never return this
-        0x0, // kTexture2DISampler_GrSLType, should never return this
-        0x0, // kTextureExternalSampler_GrSLType, should never return this
-        0x0, // kTexture2DSamplerRect_GrSLType, should never return this
-        0x0, // ktextureBufferSampler_GrSLType, should never return this
+        0x0, // Sampler2D_GrSLType, should never return this
+        0x0, // SamplerExternal_GrSLType, should never return this
+        0x0, // Sampler2DRect_GrSLType, should never return this
+        0x0, // SamplerBuffer_GrSLType, should never return this
         0x0, // kBool_GrSLType
         0x7, // kInt_GrSLType
         0x7, // kUint_GrSLType
@@ -45,15 +44,14 @@ uint32_t grsltype_to_alignment_mask(GrSLType type) {
     GR_STATIC_ASSERT(6 == kMat33f_GrSLType);
     GR_STATIC_ASSERT(7 == kMat44f_GrSLType);
     GR_STATIC_ASSERT(8 == kTexture2DSampler_GrSLType);
-    GR_STATIC_ASSERT(9 == kTexture2DISampler_GrSLType);
-    GR_STATIC_ASSERT(10 == kTextureExternalSampler_GrSLType);
-    GR_STATIC_ASSERT(11 == kTexture2DRectSampler_GrSLType);
-    GR_STATIC_ASSERT(12 == kTextureBufferSampler_GrSLType);
-    GR_STATIC_ASSERT(13 == kBool_GrSLType);
-    GR_STATIC_ASSERT(14 == kInt_GrSLType);
-    GR_STATIC_ASSERT(15 == kUint_GrSLType);
-    GR_STATIC_ASSERT(16 == kTexture2D_GrSLType);
-    GR_STATIC_ASSERT(17 == kSampler_GrSLType);
+    GR_STATIC_ASSERT(9 == kTextureExternalSampler_GrSLType);
+    GR_STATIC_ASSERT(10 == kTexture2DRectSampler_GrSLType);
+    GR_STATIC_ASSERT(11 == kTextureBufferSampler_GrSLType);
+    GR_STATIC_ASSERT(12 == kBool_GrSLType);
+    GR_STATIC_ASSERT(13 == kInt_GrSLType);
+    GR_STATIC_ASSERT(14 == kUint_GrSLType);
+    GR_STATIC_ASSERT(15 == kTexture2D_GrSLType);
+    GR_STATIC_ASSERT(16 == kSampler_GrSLType);
     GR_STATIC_ASSERT(SK_ARRAY_COUNT(kAlignmentMask) == kGrSLTypeCount);
     return kAlignmentMask[type];
 }
@@ -73,7 +71,6 @@ static inline uint32_t grsltype_to_vk_size(GrSLType type) {
         12 * sizeof(float),       // kMat33f_GrSLType
         16 * sizeof(float),       // kMat44f_GrSLType
         0,                        // kTexture2DSampler_GrSLType
-        0,                        // kTexture2DISampler_GrSLType
         0,                        // kTextureExternalSampler_GrSLType
         0,                        // kTexture2DRectSampler_GrSLType
         0,                        // kTextureBufferSampler_GrSLType
@@ -94,15 +91,14 @@ static inline uint32_t grsltype_to_vk_size(GrSLType type) {
     GR_STATIC_ASSERT(6 == kMat33f_GrSLType);
     GR_STATIC_ASSERT(7 == kMat44f_GrSLType);
     GR_STATIC_ASSERT(8 == kTexture2DSampler_GrSLType);
-    GR_STATIC_ASSERT(9 == kTexture2DISampler_GrSLType);
-    GR_STATIC_ASSERT(10 == kTextureExternalSampler_GrSLType);
-    GR_STATIC_ASSERT(11 == kTexture2DRectSampler_GrSLType);
-    GR_STATIC_ASSERT(12 == kTextureBufferSampler_GrSLType);
-    GR_STATIC_ASSERT(13 == kBool_GrSLType);
-    GR_STATIC_ASSERT(14 == kInt_GrSLType);
-    GR_STATIC_ASSERT(15 == kUint_GrSLType);
-    GR_STATIC_ASSERT(16 == kTexture2D_GrSLType);
-    GR_STATIC_ASSERT(17 == kSampler_GrSLType);
+    GR_STATIC_ASSERT(9 == kTextureExternalSampler_GrSLType);
+    GR_STATIC_ASSERT(10 == kTexture2DRectSampler_GrSLType);
+    GR_STATIC_ASSERT(11 == kTextureBufferSampler_GrSLType);
+    GR_STATIC_ASSERT(12 == kBool_GrSLType);
+    GR_STATIC_ASSERT(13 == kInt_GrSLType);
+    GR_STATIC_ASSERT(14 == kUint_GrSLType);
+    GR_STATIC_ASSERT(15 == kTexture2D_GrSLType);
+    GR_STATIC_ASSERT(16 == kSampler_GrSLType);
     GR_STATIC_ASSERT(SK_ARRAY_COUNT(kSizes) == kGrSLTypeCount);
 }
 
index 1d93e8d..a14f827 100644 (file)
@@ -19,62 +19,58 @@ bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format) {
     }
 
     switch (config) {
-        case kUnknown_GrPixelConfig:
-            return false;
         case kRGBA_8888_GrPixelConfig:
             *format = VK_FORMAT_R8G8B8A8_UNORM;
-            return true;
+            break;
         case kBGRA_8888_GrPixelConfig:
             *format = VK_FORMAT_B8G8R8A8_UNORM;
-            return true;
+            break;
         case kSRGBA_8888_GrPixelConfig:
             *format = VK_FORMAT_R8G8B8A8_SRGB;
-            return true;
+            break;
         case kSBGRA_8888_GrPixelConfig:
             *format = VK_FORMAT_B8G8R8A8_SRGB;
-            return true;
-        case kRGBA_8888_sint_GrPixelConfig:
-            *format = VK_FORMAT_R8G8B8A8_SINT;
-            return true;
+            break;
         case kRGB_565_GrPixelConfig:
             *format = VK_FORMAT_R5G6B5_UNORM_PACK16;
-            return true;
+            break;
         case kRGBA_4444_GrPixelConfig:
             // R4G4B4A4 is not required to be supported so we actually
             // store the data is if it was B4G4R4A4 and swizzle in shaders
             *format = VK_FORMAT_B4G4R4A4_UNORM_PACK16;
-            return true;
+            break;
         case kIndex_8_GrPixelConfig:
             // No current vulkan support for this config
             return false;
         case kAlpha_8_GrPixelConfig:
             *format = VK_FORMAT_R8_UNORM;
-            return true;
+            break;
         case kETC1_GrPixelConfig:
             // converting to ETC2 which is a superset of ETC1
             *format = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK;
-            return true;
+            break;
         case kLATC_GrPixelConfig:
             // No current vulkan support for this config
             return false;
         case kR11_EAC_GrPixelConfig:
             *format = VK_FORMAT_EAC_R11_UNORM_BLOCK;
-            return true;
+            break;
         case kASTC_12x12_GrPixelConfig:
             *format = VK_FORMAT_ASTC_12x12_UNORM_BLOCK;
-            return true;
+            break;
         case kRGBA_float_GrPixelConfig:
             *format = VK_FORMAT_R32G32B32A32_SFLOAT;
-            return true;
+            break;
         case kRGBA_half_GrPixelConfig:
             *format = VK_FORMAT_R16G16B16A16_SFLOAT;
-            return true;
+            break;
         case kAlpha_half_GrPixelConfig:
             *format = VK_FORMAT_R16_SFLOAT;
-            return true;
+            break;
+        default:
+            return false;
     }
-    SkFAIL("Unexpected config");
-    return false;
+    return true;
 }
 
 bool GrVkFormatToPixelConfig(VkFormat format, GrPixelConfig* config) {
@@ -96,9 +92,6 @@ bool GrVkFormatToPixelConfig(VkFormat format, GrPixelConfig* config) {
         case VK_FORMAT_B8G8R8A8_SRGB:
             *config = kSBGRA_8888_GrPixelConfig;
             break;
-        case VK_FORMAT_R8G8B8A8_SINT:
-            *config = kRGBA_8888_sint_GrPixelConfig;
-            break;
         case VK_FORMAT_R5G6B5_UNORM_PACK16:
             *config = kRGB_565_GrPixelConfig;
             break;
index 10c5362..f6fed21 100644 (file)
@@ -20,7 +20,6 @@ static inline int grsltype_to_location_size(GrSLType type) {
         3,  // kMat33f_GrSLType
         4,  // kMat44f_GrSLType
         0,  // kTexture2DSampler_GrSLType
-        0,  // kTexture2DISampler_GrSLType
         0,  // kTextureExternalSampler_GrSLType
         0,  // kTexture2DRectSampler_GrSLType
         0,  // kTextureBufferSampler_GrSLType
@@ -41,15 +40,14 @@ static inline int grsltype_to_location_size(GrSLType type) {
     GR_STATIC_ASSERT(6 == kMat33f_GrSLType);
     GR_STATIC_ASSERT(7 == kMat44f_GrSLType);
     GR_STATIC_ASSERT(8 == kTexture2DSampler_GrSLType);
-    GR_STATIC_ASSERT(9 == kTexture2DISampler_GrSLType);
-    GR_STATIC_ASSERT(10 == kTextureExternalSampler_GrSLType);
-    GR_STATIC_ASSERT(11 == kTexture2DRectSampler_GrSLType);
-    GR_STATIC_ASSERT(12 == kTextureBufferSampler_GrSLType);
-    GR_STATIC_ASSERT(13 == kBool_GrSLType);
-    GR_STATIC_ASSERT(14 == kInt_GrSLType);
-    GR_STATIC_ASSERT(15 == kUint_GrSLType);
-    GR_STATIC_ASSERT(16 == kTexture2D_GrSLType);
-    GR_STATIC_ASSERT(17 == kSampler_GrSLType);
+    GR_STATIC_ASSERT(9 == kTextureExternalSampler_GrSLType);
+    GR_STATIC_ASSERT(10 == kTexture2DRectSampler_GrSLType);
+    GR_STATIC_ASSERT(11 == kTextureBufferSampler_GrSLType);
+    GR_STATIC_ASSERT(12 == kBool_GrSLType);
+    GR_STATIC_ASSERT(13 == kInt_GrSLType);
+    GR_STATIC_ASSERT(14 == kUint_GrSLType);
+    GR_STATIC_ASSERT(15 == kTexture2D_GrSLType);
+    GR_STATIC_ASSERT(16 == kSampler_GrSLType);
     GR_STATIC_ASSERT(SK_ARRAY_COUNT(kSizes) == kGrSLTypeCount);
 }
 
index 72ea9c4..c3adaea 100644 (file)
@@ -111,8 +111,6 @@ Compiler::Compiler()
     ADD_TYPE(Sampler2DMS);
     ADD_TYPE(Sampler2DMSArray);
 
-    ADD_TYPE(ISampler2D);
-
     ADD_TYPE(GSampler1D);
     ADD_TYPE(GSampler2D);
     ADD_TYPE(GSampler3D);
index 80ad7fb..dc41c6d 100644 (file)
@@ -78,8 +78,6 @@ public:
     , fSampler1DArrayShadow_Type(new Type("sampler1DArrayShadow"))
     , fSampler2DArrayShadow_Type(new Type("sampler2DArrayShadow"))
     , fSamplerCubeArrayShadow_Type(new Type("samplerCubeArrayShadow"))
-    // Related to below FIXME, gsampler*s don't currently expand to cover integer case.
-    , fISampler2D_Type(new Type("isampler2D", SpvDim2D, false, false, false, true))
     // FIXME figure out what we're supposed to do with the gsampler et al. types)
     , fGSampler1D_Type(new Type("$gsampler1D", static_type(*fSampler1D_Type)))
     , fGSampler2D_Type(new Type("$gsampler2D", static_type(*fSampler2D_Type)))
@@ -195,8 +193,6 @@ public:
     const std::unique_ptr<Type> fSampler2DArrayShadow_Type;
     const std::unique_ptr<Type> fSamplerCubeArrayShadow_Type;
 
-    const std::unique_ptr<Type> fISampler2D_Type;
-
     const std::unique_ptr<Type> fGSampler1D_Type;
     const std::unique_ptr<Type> fGSampler2D_Type;
     const std::unique_ptr<Type> fGSampler3D_Type;
index 6458a15..f57e62a 100644 (file)
@@ -251,9 +251,6 @@ int textureQueryLevels(samplerCubeArrayShadow sampler);
 $gvec4 texture($gsampler1D sampler, float P);
 $gvec4 texture($gsampler1D sampler, float P, float bias);
 $gvec4 texture($gsampler2D sampler, vec2 P);
-// The above currently only expand to handle the float/fixed case. So we also declare this integer
-// version of texture().
-ivec4 texture(isampler2D sampler, vec2 P);
 vec4 texture(samplerExternalOES sampler, vec2 P, float bias);
 vec4 texture(samplerExternalOES sampler, vec2 P);
 
@@ -486,7 +483,6 @@ vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod);
 vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod);
 */
 vec4 texture2D(sampler2D sampler, vec2 coord);
-ivec4 texture2D(isampler2D sampler, vec2 coord);
 vec4 texture2D(samplerExternalOES sampler, vec2 coord);
 vec4 texture2D(sampler2D sampler, vec2 coord, float bias);
 vec4 texture2DProj(sampler2D sampler, vec3 coord);
diff --git a/tests/IntTextureTest.cpp b/tests/IntTextureTest.cpp
deleted file mode 100644 (file)
index 01c7537..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright 2016 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "Test.h"
-
-#if SK_SUPPORT_GPU
-#include "GrContext.h"
-#include "GrRenderTargetContext.h"
-#include "GrTexture.h"
-#include "effects/GrSimpleTextureEffect.h"
-
-template <typename I>
-static SK_WHEN(std::is_integral<I>::value && 4 == sizeof(I), void)
-check_pixels(skiatest::Reporter* reporter, int w, int h,
-                         const I exepctedData[], const I actualData[]) {
-    for (int j = 0; j < h; ++j) {
-        for (int i = 0; i < w; ++i) {
-            I expected = exepctedData[j * w + i];
-            I actual = actualData[j * w + i];
-            if (expected != actual) {
-                ERRORF(reporter, "Expected 0x08%x, got 0x%08x at %d, %d.", expected, actual, i, j);
-                return;
-            }
-        }
-    }
-}
-
-DEF_GPUTEST_FOR_RENDERING_CONTEXTS(IntTexture, reporter, ctxInfo) {
-    GrContext* context = ctxInfo.grContext();
-    if (!context->caps()->isConfigTexturable(kRGBA_8888_sint_GrPixelConfig)) {
-        return;
-    }
-    static const int kS = UINT8_MAX + 1;
-    GrSurfaceDesc desc;
-    desc.fConfig = kRGBA_8888_sint_GrPixelConfig;
-    desc.fWidth = kS;
-    desc.fHeight = kS;
-    sk_sp<GrTexture> texture;
-
-    std::unique_ptr<int32_t> testData(new int32_t[kS * kS]);
-    for (int j = 0; j < kS; ++j) {
-        for (int i = 0; i < kS; ++i) {
-            int32_t r = i - INT8_MIN;
-            int32_t g = j - INT8_MIN;
-            int32_t b = INT8_MAX - r;
-            int32_t a = INT8_MAX - g;
-            testData.get()[j * kS + i] = a << 24 | b << 16 | g << 8 | r;
-        }
-    }
-
-    // Test that attempting to create a integer texture with multiple MIP level fails.
-    GrMipLevel levels[2];
-    levels[0].fPixels = testData.get();
-    levels[0].fRowBytes = kS * sizeof(int32_t);
-    levels[1].fPixels = testData.get();
-    levels[1].fRowBytes = (kS / 2) * sizeof(int32_t);
-    texture.reset(context->textureProvider()->createMipMappedTexture(desc, SkBudgeted::kYes, levels,
-                                                                     2));
-    REPORTER_ASSERT(reporter, !texture);
-
-    // Test that we can create a integer texture.
-    texture.reset(context->textureProvider()->createTexture(desc, SkBudgeted::kYes,
-                                                            levels[0].fPixels,
-                                                            levels[0].fRowBytes));
-    REPORTER_ASSERT(reporter, texture);
-    if (!texture) {
-        return;
-    }
-
-    // Test that reading to a non-integer config fails.
-    std::unique_ptr<int32_t> readData(new int32_t[kS * kS]);
-    bool success = texture->readPixels(0, 0, kS, kS, kRGBA_8888_GrPixelConfig, readData.get());
-    REPORTER_ASSERT(reporter, !success);
-    std::unique_ptr<uint16_t> halfData(new uint16_t[4 * kS * kS]);
-    success = texture->readPixels(0, 0, kS, kS, kRGBA_half_GrPixelConfig, halfData.get());
-    REPORTER_ASSERT(reporter, !success);
-
-    // Can read back as ints. (ES only requires being able to read back into 32bit ints which
-    // we don't support. Right now this test is counting on GR_RGBA_INTEGER/GL_BYTE being the
-    // implementation-dependent second format).
-    sk_bzero(readData.get(), sizeof(int32_t) * kS * kS);
-    success = texture->readPixels(0, 0, kS, kS, kRGBA_8888_sint_GrPixelConfig, readData.get());
-    REPORTER_ASSERT(reporter, success);
-    if (success) {
-        check_pixels(reporter, kS, kS, testData.get(), readData.get());
-    }
-
-    // readPixels should fail if we attempt to use the unpremul flag with an integer texture.
-    success = texture->readPixels(0, 0, kS, kS, kRGBA_8888_sint_GrPixelConfig, readData.get(), 0,
-                                  GrContext::kUnpremul_PixelOpsFlag);
-    REPORTER_ASSERT(reporter, !success);
-
-    // Test that copying from one integer texture to another succeeds.
-    sk_sp<GrTexture> copy(context->textureProvider()->createTexture(desc, SkBudgeted::kYes));
-    REPORTER_ASSERT(reporter, copy);
-    if (!copy) {
-        return;
-    }
-    success = context->copySurface(copy.get(), texture.get());
-    REPORTER_ASSERT(reporter, success);
-    if (!success) {
-        return;
-    }
-    sk_bzero(readData.get(), sizeof(int32_t) * kS * kS);
-    success = texture->readPixels(0, 0, kS, kS, kRGBA_8888_sint_GrPixelConfig, readData.get());
-    REPORTER_ASSERT(reporter, success);
-    if (success) {
-        check_pixels(reporter, kS, kS, testData.get(), readData.get());
-    }
-
-    // Test that copying to a non-integer texture fails.
-    GrSurfaceDesc nonIntDesc = desc;
-    nonIntDesc.fConfig = kRGBA_8888_GrPixelConfig;
-    copy.reset(context->textureProvider()->createTexture(nonIntDesc, SkBudgeted::kYes));
-    REPORTER_ASSERT(reporter, copy);
-    if (!copy) {
-        return;
-    }
-    success = context->copySurface(copy.get(), texture.get());
-    REPORTER_ASSERT(reporter, !success);
-    nonIntDesc.fConfig = kRGBA_half_GrPixelConfig;
-    copy.reset(context->textureProvider()->createTexture(nonIntDesc, SkBudgeted::kYes));
-    REPORTER_ASSERT(reporter, copy ||
-                    !context->caps()->isConfigTexturable(kRGBA_half_GrPixelConfig));
-    if (copy) {
-        success = context->copySurface(copy.get(), texture.get());
-        REPORTER_ASSERT(reporter, !success);
-    }
-
-    // We overwrite the top left quarter of the texture with the bottom right quarter of the
-    // original data.
-    const void* bottomRightQuarter = testData.get() + kS / 2 * kS + kS / 2;
-    size_t rowBytes = kS * sizeof(int32_t);
-
-    // Can't write pixels from a non-int config.
-    success = texture->writePixels(0, 0, kS/2, kS/2, kRGBA_8888_GrPixelConfig, bottomRightQuarter,
-                                   rowBytes);
-    REPORTER_ASSERT(reporter, !success);
-
-    // Can't use unpremul flag.
-    success = texture->writePixels(0, 0, kS/2, kS/2, kRGBA_8888_sint_GrPixelConfig,
-                                   bottomRightQuarter, rowBytes,
-                                   GrContext::kUnpremul_PixelOpsFlag);
-    REPORTER_ASSERT(reporter, !success);
-
-    success = texture->writePixels(0, 0, kS/2, kS/2, kRGBA_8888_sint_GrPixelConfig,
-                                   bottomRightQuarter, rowBytes);
-    REPORTER_ASSERT(reporter, success);
-    if (!success) {
-        return;
-    }
-    sk_bzero(readData.get(), sizeof(int32_t) * kS * kS);
-    success = texture->readPixels(0, 0, kS, kS, kRGBA_8888_sint_GrPixelConfig, readData.get());
-    REPORTER_ASSERT(reporter, success);
-    if (!success) {
-        return;
-    }
-    std::unique_ptr<int32_t> overwrittenTestData(new int32_t[kS * kS]);
-    memcpy(overwrittenTestData.get(), testData.get(), sizeof(int32_t) * kS * kS);
-    char* dst = (char*)overwrittenTestData.get();
-    char* src = (char*)(testData.get() + kS/2 * kS + kS/2);
-    for (int i = 0; i < kS/2; ++i) {
-        memcpy(dst, src, sizeof(int32_t) * kS/2);
-        dst += rowBytes;
-        src += rowBytes;
-    }
-    check_pixels(reporter, kS, kS, overwrittenTestData.get(), readData.get());
-
-    // Test drawing from the integer texture to a fixed point texture. To avoid any premul issues
-    // we init the int texture with 0s and 1s and make alpha always be 1. We expect that 1s turn
-    // into 0xffs and zeros stay zero.
-    std::unique_ptr<uint32_t> expectedData(new uint32_t[kS * kS]);
-    std::unique_ptr<uint32_t> actualData(new uint32_t[kS * kS]);
-    for (int i = 0; i < kS*kS; ++i) {
-        int32_t a = 0x1;
-        int32_t b = ((i & 0x1) ? 1 : 0);
-        int32_t g = ((i & 0x1) ? 0 : 1);
-        int32_t r = ((i & 0x2) ? 1 : 0);
-        testData.get()[i] = (a << 24) | (b << 16) | (g << 8) | r;
-        expectedData.get()[i] = ((0xFF * a) << 24) | ((0xFF * b) << 16) |
-                                ((0xFF * g) << 8) | (0xFF * r);
-    }
-    texture->writePixels(0, 0, kS, kS, kRGBA_8888_sint_GrPixelConfig, testData.get());
-    sk_sp<GrRenderTargetContext> rtContext = context->makeRenderTargetContext(
-            SkBackingFit::kExact, kS, kS, kRGBA_8888_GrPixelConfig, nullptr);
-
-    for (auto filter : {GrTextureParams::kNone_FilterMode,
-                        GrTextureParams::kBilerp_FilterMode,
-                        GrTextureParams::kMipMap_FilterMode}) {
-        SkMatrix m;
-        m.setIDiv(kS, kS);
-        sk_sp<GrFragmentProcessor> fp(GrSimpleTextureEffect::Make(texture.get(), nullptr, m,
-                                                                  filter));
-        REPORTER_ASSERT(reporter, fp);
-        if (!fp) {
-            return;
-        }
-        rtContext->clear(nullptr, 0xDDAABBCC, true);
-        GrPaint paint;
-        paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
-        paint.addColorFragmentProcessor(fp);
-        rtContext->drawPaint(GrNoClip(), paint, SkMatrix::I());
-        SkImageInfo readInfo = SkImageInfo::Make(kS, kS, kRGBA_8888_SkColorType,
-                                                 kPremul_SkAlphaType);
-        rtContext->readPixels(readInfo, actualData.get(), 0, 0, 0);
-        check_pixels(reporter, kS, kS, expectedData.get(), actualData.get());
-    }
-
-    // No rendering to integer textures.
-    GrSurfaceDesc intRTDesc = desc;
-    intRTDesc.fFlags = kRenderTarget_GrSurfaceFlag;
-    texture.reset(context->textureProvider()->createTexture(intRTDesc, SkBudgeted::kYes));
-    REPORTER_ASSERT(reporter, !texture);
-}
-
-#endif