From e673219a561d31eb0a1e478d6288d099600655a0 Mon Sep 17 00:00:00 2001 From: prsadhuk Date: Wed, 17 Jun 2020 22:12:07 +0530 Subject: [PATCH] 8247772: Lanai: Several jtreg tests fails with assertion validateTextureDimensions: 759: failed assertion 'MTLTextureDescriptor has width greater than maximum allowed size of 16384' --- .../native/libawt_lwawt/java2d/metal/MTLGraphicsConfig.h | 6 ++++++ .../native/libawt_lwawt/java2d/metal/MTLGraphicsConfig.m | 8 +------- .../native/libawt_lwawt/java2d/metal/MTLSurfaceData.m | 3 +++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLGraphicsConfig.h b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLGraphicsConfig.h index ca8f9194a9a..77b585c15c8 100644 --- a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLGraphicsConfig.h +++ b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLGraphicsConfig.h @@ -77,4 +77,10 @@ typedef struct _MTLGraphicsConfigInfo { MTLContext *context; } MTLGraphicsConfigInfo; +// From "Metal Feature Set Tables" +// There are 2 GPU families for mac - MTLGPUFamilyMac1 and MTLGPUFamilyMac2 +// Both of them support "Maximum 2D texture width and height" of 16384 pixels +// Note : there is no API to get this value, hence hardcoding by reading from the table +#define MaxTextureSize 16384 + #endif /* MTLGraphicsConfig_h_Included */ diff --git a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLGraphicsConfig.m b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLGraphicsConfig.m index 44073e5e541..525eb7c9903 100644 --- a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLGraphicsConfig.m +++ b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLGraphicsConfig.m @@ -218,11 +218,5 @@ + (void) _getMTLConfigInfo: (NSMutableArray *)argValue { { J2dTraceLn(J2D_TRACE_INFO, "MTLGraphicsConfig_nativeGetMaxTextureSize"); - // From "Metal Feature Set Tables" - // There are 2 GPU families for mac - MTLGPUFamilyMac1 and MTLGPUFamilyMac2 - // Both of them support "Maximum 2D texture width and height" of 16384 pixels - // Note : there is no API to get this value, hence hardcoding by reading from the table - __block int max = 16384; - - return (jint)max; + return (jint)MaxTextureSize; } diff --git a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLSurfaceData.m b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLSurfaceData.m index 946f4149a18..ef5077df18b 100644 --- a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLSurfaceData.m +++ b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLSurfaceData.m @@ -68,6 +68,9 @@ static jboolean MTLSurfaceData_initTexture(BMTLSDOps *bmtlsdo, jboolean isOpaque MTLContext* ctx = mtlsdo->configInfo->context; + if (width > MaxTextureSize) { + width = MaxTextureSize; + } MTLTextureDescriptor *textureDescriptor = [MTLTextureDescriptor texture2DDescriptorWithPixelFormat: MTLPixelFormatBGRA8Unorm width: width height: height mipmapped: NO]; textureDescriptor.usage = MTLTextureUsageUnknown; bmtlsdo->pTexture = [ctx.device newTextureWithDescriptor: textureDescriptor];