Changeset 213541 in webkit


Ignore:
Timestamp:
Mar 7, 2017 2:23:33 PM (7 years ago)
Author:
dino@apple.com
Message:

Add GPUDevice implementation and WebGPULayer
https://bugs.webkit.org/show_bug.cgi?id=169219
<rdar://problem/30879048>

Reviewed by Sam Weinig.

Source/WebCore:

Add a basic implementation of a GPUDevice object,
which references a MTLDevice. Also add a WebGPULayer
that will ultimately be used to host WebGPU content.

WebKit API Test: WebCore/mac/GPUDevice.mm

  • Configurations/WebCore.xcconfig: Link to Metal.
  • PlatformMac.cmake: New files.
  • WebCore.xcodeproj/project.pbxproj:
  • platform/Logging.h: Add a WebGPU logging channel.
  • platform/graphics/cocoa/GPUDeviceMetal.mm: Added.

(WebCore::GPUDevice::GPUDevice): Cocoa implementation.
(WebCore::GPUDevice::reshape):

  • platform/graphics/cocoa/WebGPULayer.h: Added.
  • platform/graphics/cocoa/WebGPULayer.mm: Added.

(-[WebGPULayer initWithGPUDevice:]):
(-[WebGPULayer copyImageSnapshotWithColorSpace:]):
(-[WebGPULayer display]):

  • platform/graphics/gpu/GPUDevice.cpp: Added.

(WebCore::GPUDevice::create):
(WebCore::GPUDevice::~GPUDevice):
(WebCore::GPUDevice::GPUDevice): Implementation for platforms
other than Mac and iOS hardware.
(WebCore::GPUDevice::reshape):

  • platform/graphics/gpu/GPUDevice.h: Added.

(WebCore::GPUDevice::platformLayer):
(WebCore::GPUDevice::platformDevice):
(WebCore::GPUDevice::layer):

Tools:

Test for WebCore's GPUDevice class.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/mac/GPUDevice.mm: Added.

(TestWebKitAPI::TEST):

Location:
trunk
Files:
7 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r213540 r213541  
     12017-03-07  Dean Jackson  <dino@apple.com>
     2
     3        Add GPUDevice implementation and WebGPULayer
     4        https://bugs.webkit.org/show_bug.cgi?id=169219
     5        <rdar://problem/30879048>
     6
     7        Reviewed by Sam Weinig.
     8
     9        Add a basic implementation of a GPUDevice object,
     10        which references a MTLDevice. Also add a WebGPULayer
     11        that will ultimately be used to host WebGPU content.
     12
     13        WebKit API Test: WebCore/mac/GPUDevice.mm
     14
     15        * Configurations/WebCore.xcconfig: Link to Metal.
     16
     17        * PlatformMac.cmake: New files.
     18        * WebCore.xcodeproj/project.pbxproj:
     19
     20        * platform/Logging.h: Add a WebGPU logging channel.
     21
     22        * platform/graphics/cocoa/GPUDeviceMetal.mm: Added.
     23        (WebCore::GPUDevice::GPUDevice): Cocoa implementation.
     24        (WebCore::GPUDevice::reshape):
     25        * platform/graphics/cocoa/WebGPULayer.h: Added.
     26        * platform/graphics/cocoa/WebGPULayer.mm: Added.
     27        (-[WebGPULayer initWithGPUDevice:]):
     28        (-[WebGPULayer copyImageSnapshotWithColorSpace:]):
     29        (-[WebGPULayer display]):
     30        * platform/graphics/gpu/GPUDevice.cpp: Added.
     31        (WebCore::GPUDevice::create):
     32        (WebCore::GPUDevice::~GPUDevice):
     33        (WebCore::GPUDevice::GPUDevice): Implementation for platforms
     34        other than Mac and iOS hardware.
     35        (WebCore::GPUDevice::reshape):
     36        * platform/graphics/gpu/GPUDevice.h: Added.
     37        (WebCore::GPUDevice::platformLayer):
     38        (WebCore::GPUDevice::platformDevice):
     39        (WebCore::GPUDevice::layer):
     40
    1412017-03-07  Antoine Quint  <graouts@apple.com>
    242
  • trunk/Source/WebCore/Configurations/WebCore.xcconfig

    r213483 r213541  
    7979
    8080OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_PLATFORM)
    81 OTHER_LDFLAGS_BASE = -lsqlite3 -lobjc -lANGLE;
     81OTHER_LDFLAGS_BASE = -lsqlite3 -lobjc -lANGLE -framework Metal;
    8282OTHER_LDFLAGS_BASE_ios = $(OTHER_LDFLAGS_BASE) -framework CFNetwork -framework CoreGraphics -framework CoreText -framework Foundation -framework ImageIO -framework MobileCoreServices -framework OpenGLES -lMobileGestalt $(WK_IOS_BINCOMPAT_LDFLAGS);
    8383OTHER_LDFLAGS_PLATFORM[sdk=iphoneos*] = $(OTHER_LDFLAGS_BASE_ios) -framework IOSurface -framework GraphicsServices $(LIBWEBRTC_LDFLAGS);
  • trunk/Source/WebCore/PlatformMac.cmake

    r213489 r213541  
    108108    "${WEBCORE_DIR}/platform/graphics/cg"
    109109    "${WEBCORE_DIR}/platform/graphics/cv"
     110    "${WEBCORE_DIR}/platform/graphics/gpu"
    110111    "${WEBCORE_DIR}/platform/graphics/egl"
    111112    "${WEBCORE_DIR}/platform/graphics/opentype"
     
    415416    platform/graphics/cg/TransformationMatrixCG.cpp
    416417
     418    platform/graphics/cocoa/GPUDeviceMetal.mm
    417419    platform/graphics/cocoa/FontCacheCoreText.cpp
    418420    platform/graphics/cocoa/FontCascadeCocoa.mm
     
    427429    platform/graphics/cv/TextureCacheCV.mm
    428430    platform/graphics/cv/VideoTextureCopierCV.cpp
     431
     432    platform/graphics/gpu/GPUDevice.cpp
    429433
    430434    platform/graphics/mac/ColorMac.mm
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r213489 r213541  
    13531353                314BE3A61B3103FB00141982 /* NamedImageGeneratedImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 314BE3A41B3103FB00141982 /* NamedImageGeneratedImage.cpp */; };
    13541354                314BE3A71B3103FB00141982 /* NamedImageGeneratedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 314BE3A51B3103FB00141982 /* NamedImageGeneratedImage.h */; };
     1355                316BDB861E6E0A2700DE0D5A /* GPUDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDB851E6E0A2100DE0D5A /* GPUDevice.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1356                316BDB871E6E0A2C00DE0D5A /* GPUDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDB841E6E0A2100DE0D5A /* GPUDevice.cpp */; };
     1357                316BDB8B1E6E153000DE0D5A /* WebGPULayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDB891E6E153000DE0D5A /* WebGPULayer.mm */; };
     1358                316BDB8C1E6E153000DE0D5A /* WebGPULayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDB8A1E6E153000DE0D5A /* WebGPULayer.h */; };
     1359                316BDB8D1E6E189800DE0D5A /* GPUDeviceMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDB881E6E141C00DE0D5A /* GPUDeviceMetal.mm */; };
    13551360                316FE0710E6CCBEE00BF6088 /* JSCSSKeyframeRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316FE06D0E6CCBEE00BF6088 /* JSCSSKeyframeRule.cpp */; };
    13561361                316FE0720E6CCBEE00BF6088 /* JSCSSKeyframeRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE06E0E6CCBEE00BF6088 /* JSCSSKeyframeRule.h */; };
     
    86658670                314BE3A41B3103FB00141982 /* NamedImageGeneratedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NamedImageGeneratedImage.cpp; sourceTree = "<group>"; };
    86668671                314BE3A51B3103FB00141982 /* NamedImageGeneratedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NamedImageGeneratedImage.h; sourceTree = "<group>"; };
     8672                316BDB841E6E0A2100DE0D5A /* GPUDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPUDevice.cpp; sourceTree = "<group>"; };
     8673                316BDB851E6E0A2100DE0D5A /* GPUDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUDevice.h; sourceTree = "<group>"; };
     8674                316BDB881E6E141C00DE0D5A /* GPUDeviceMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPUDeviceMetal.mm; sourceTree = "<group>"; };
     8675                316BDB891E6E153000DE0D5A /* WebGPULayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebGPULayer.mm; sourceTree = "<group>"; };
     8676                316BDB8A1E6E153000DE0D5A /* WebGPULayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGPULayer.h; sourceTree = "<group>"; };
    86678677                316FE06D0E6CCBEE00BF6088 /* JSCSSKeyframeRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSKeyframeRule.cpp; sourceTree = "<group>"; };
    86688678                316FE06E0E6CCBEE00BF6088 /* JSCSSKeyframeRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCSSKeyframeRule.h; sourceTree = "<group>"; };
     
    1743717447                        isa = PBXGroup;
    1743817448                        children = (
     17449                                316BDB841E6E0A2100DE0D5A /* GPUDevice.cpp */,
     17450                                316BDB851E6E0A2100DE0D5A /* GPUDevice.h */,
    1743917451                                498770D71242C535002226BA /* Texture.cpp */,
    1744017452                                498770D81242C535002226BA /* Texture.h */,
     
    2252822540                                7C4EDD731A7B607800198C4D /* FontCocoa.mm */,
    2252922541                                B5320D6A122A24E9002D1440 /* FontPlatformDataCocoa.mm */,
     22542                                316BDB881E6E141C00DE0D5A /* GPUDeviceMetal.mm */,
    2253022543                                2D0B4AA918DA1CCD00434DE1 /* IOSurface.h */,
    2253122544                                2D0B4AAA18DA1CCD00434DE1 /* IOSurface.mm */,
     
    2253722550                                2D3EF4461917915C00034184 /* WebCoreCALayerExtras.h */,
    2253822551                                2D3EF4471917915C00034184 /* WebCoreCALayerExtras.mm */,
     22552                                316BDB891E6E153000DE0D5A /* WebGPULayer.mm */,
     22553                                316BDB8A1E6E153000DE0D5A /* WebGPULayer.h */,
    2253922554                        );
    2254022555                        path = cocoa;
     
    2719627211                                B2FA3D730AB75A6F000E5AC4 /* JSSVGFEDiffuseLightingElement.h in Headers */,
    2719727212                                B2FA3D750AB75A6F000E5AC4 /* JSSVGFEDisplacementMapElement.h in Headers */,
     27213                                316BDB8C1E6E153000DE0D5A /* WebGPULayer.h in Headers */,
    2719827214                                B2FA3D770AB75A6F000E5AC4 /* JSSVGFEDistantLightElement.h in Headers */,
    2719927215                                4358E87D1360A2EE00E4748C /* JSSVGFEDropShadowElement.h in Headers */,
     
    2754827564                                D3AA10F4123A98AA0092152B /* MediaQueryMatcher.h in Headers */,
    2754927565                                9493B6C11D74B4120088E780 /* MediaQueryParser.h in Headers */,
     27566                                316BDB861E6E0A2700DE0D5A /* GPUDevice.h in Headers */,
    2755027567                                C90843D01B18E47D00B68564 /* MediaRemoteControls.h in Headers */,
    2755127568                                CD8ACA8F1D23971900ECC59E /* MediaRemoteSoftLink.h in Headers */,
     
    2992229939                                97BC6A201505F081001B74AC /* Database.cpp in Sources */,
    2992329940                                97BC6A231505F081001B74AC /* DatabaseAuthorizer.cpp in Sources */,
     29941                                316BDB8B1E6E153000DE0D5A /* WebGPULayer.mm in Sources */,
    2992429942                                97BC6A271505F081001B74AC /* DatabaseContext.cpp in Sources */,
    2992529943                                FE456F181677D74E005EDDF9 /* DatabaseManager.cpp in Sources */,
     
    3050330521                                71B1E1261640491A00B1880A /* InspectorLayerTreeAgent.cpp in Sources */,
    3050430522                                A5071E801C506B66009951BE /* InspectorMemoryAgent.cpp in Sources */,
     30523                                316BDB8D1E6E189800DE0D5A /* GPUDeviceMetal.mm in Sources */,
    3050530524                                82AB1775125C826700C5069D /* InspectorNetworkAgent.cpp in Sources */,
    3050630525                                504AACCD1834455900E3D9BC /* InspectorNodeFinder.cpp in Sources */,
     
    3146231481                                CD641EBF1819B36000EE4C41 /* MediaTimeAVFoundation.cpp in Sources */,
    3146331482                                CD60C0C6193E87C7003C656B /* MediaTimeQTKit.mm in Sources */,
     31483                                316BDB871E6E0A2C00DE0D5A /* GPUDevice.cpp in Sources */,
    3146431484                                932CC0F71DFFDA1F004C0F9F /* MediaTrackConstraints.cpp in Sources */,
    3146531485                                99C7CCB518C6B8990032E413 /* MemoizedDOMResult.cpp in Sources */,
  • trunk/Source/WebCore/platform/Logging.h

    r213167 r213541  
    8888    M(WebAudio) \
    8989    M(WebGL) \
     90    M(WebGPU) \
    9091    M(WebRTC) \
    9192    M(WebReplay) \
  • trunk/Tools/ChangeLog

    r213533 r213541  
     12017-03-07  Dean Jackson  <dino@apple.com>
     2
     3        Add GPUDevice implementation and WebGPULayer
     4        https://bugs.webkit.org/show_bug.cgi?id=169219
     5        <rdar://problem/30879048>
     6
     7        Reviewed by Sam Weinig.
     8
     9        Test for WebCore's GPUDevice class.
     10
     11        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
     12        * TestWebKitAPI/Tests/WebCore/mac/GPUDevice.mm: Added.
     13        (TestWebKitAPI::TEST):
     14
    1152017-03-07  Alex Christensen  <achristensen@webkit.org>
    216
  • trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

    r213319 r213541  
    9494                2EFF06D71D8AF34A0004BB30 /* WKWebViewCandidateTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2EFF06D61D8AF34A0004BB30 /* WKWebViewCandidateTests.mm */; };
    9595                315118101DB1AE4000176304 /* ExtendedColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3151180F1DB1ADD500176304 /* ExtendedColor.cpp */; };
     96                3162AE9C1E6F2FF5000E4DBC /* GPUDevice.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3162AE9B1E6F2FCE000E4DBC /* GPUDevice.mm */; };
    9697                33BE5AF9137B5AAE00705813 /* MouseMoveAfterCrash_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33BE5AF8137B5AAE00705813 /* MouseMoveAfterCrash_Bundle.cpp */; };
    9798                33DC8912141955FE00747EF7 /* simple-iframe.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 33DC890E1419539300747EF7 /* simple-iframe.html */; };
     
    947948                2EFF06D61D8AF34A0004BB30 /* WKWebViewCandidateTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewCandidateTests.mm; sourceTree = "<group>"; };
    948949                3151180F1DB1ADD500176304 /* ExtendedColor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExtendedColor.cpp; sourceTree = "<group>"; };
     950                3162AE9B1E6F2FCE000E4DBC /* GPUDevice.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPUDevice.mm; sourceTree = "<group>"; };
    949951                333B9CE11277F23100FEFCE3 /* PreventEmptyUserAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PreventEmptyUserAgent.cpp; sourceTree = "<group>"; };
    950952                33BE5AF4137B5A6C00705813 /* MouseMoveAfterCrash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseMoveAfterCrash.cpp; sourceTree = "<group>"; };
     
    16611663                        sourceTree = "<group>";
    16621664                };
     1665                3162AE9A1E6F2F8F000E4DBC /* mac */ = {
     1666                        isa = PBXGroup;
     1667                        children = (
     1668                                3162AE9B1E6F2FCE000E4DBC /* GPUDevice.mm */,
     1669                        );
     1670                        path = mac;
     1671                        sourceTree = "<group>";
     1672                };
    16631673                440A1D3614A01000008A66F2 /* WebCore */ = {
    16641674                        isa = PBXGroup;
    16651675                        children = (
    1666                                 8E4A85361E1D1AA100F53B0F /* GridPosition.cpp */,
     1676                                7A909A6F1D877475007E10F8 /* AffineTransform.cpp */,
     1677                                93A720E518F1A0E800A848E1 /* CalculationValue.cpp */,
     1678                                07C046C91E42573E007201E7 /* CARingBuffer.cpp */,
    16671679                                CD89D0371C4EDB1300040A04 /* cocoa */,
    1668                                 7A909A6F1D877475007E10F8 /* AffineTransform.cpp */,
    1669                                 07C046C91E42573E007201E7 /* CARingBuffer.cpp */,
    1670                                 7A909A701D877475007E10F8 /* FloatPoint.cpp */,
    1671                                 7A909A711D877475007E10F8 /* FloatRect.cpp */,
    1672                                 7A909A721D877475007E10F8 /* FloatSize.cpp */,
    1673                                 7A909A731D877475007E10F8 /* IntPoint.cpp */,
    1674                                 7A909A741D877475007E10F8 /* IntRect.cpp */,
    1675                                 7A909A751D877475007E10F8 /* IntSize.cpp */,
    1676                                 93A720E518F1A0E800A848E1 /* CalculationValue.cpp */,
    16771680                                7C3965051CDD74F90094DBB8 /* Color.cpp */,
     1681                                1C9EB8401E380DA1005C6442 /* ComplexTextController.cpp */,
    16781682                                7CB184C41AA3F2100066EDFD /* ContentExtensions.cpp */,
    16791683                                CD5451E919E41F9D0016936F /* CSSParser.cpp */,
     
    16831687                                3151180F1DB1ADD500176304 /* ExtendedColor.cpp */,
    16841688                                41973B5A1AF2286A006C7B36 /* FileSystem.cpp */,
     1689                                7A909A701D877475007E10F8 /* FloatPoint.cpp */,
     1690                                7A909A711D877475007E10F8 /* FloatRect.cpp */,
     1691                                7A909A721D877475007E10F8 /* FloatSize.cpp */,
     1692                                1CAD1F851E5CE7DA00AF2C2C /* FontCache.cpp */,
     1693                                8E4A85361E1D1AA100F53B0F /* GridPosition.cpp */,
    16851694                                83B88A331C80056D00BB2418 /* HTMLParserIdioms.cpp */,
     1695                                7A909A731D877475007E10F8 /* IntPoint.cpp */,
     1696                                7A909A741D877475007E10F8 /* IntRect.cpp */,
     1697                                7A909A751D877475007E10F8 /* IntSize.cpp */,
    16861698                                14464012167A8305000BD218 /* LayoutUnit.cpp */,
     1699                                3162AE9A1E6F2F8F000E4DBC /* mac */,
    16871700                                CD225C071C45A69200140761 /* ParsedContentRange.cpp */,
    16881701                                CDCFA7A91E45122F00C2433D /* SampleMap.cpp */,
     
    16971710                                5C6E65411D5CEF8500F7862E /* URLParser.cpp */,
    16981711                                9C64DC311D76198A004B598E /* YouTubePluginReplacement.cpp */,
    1699                                 1C9EB8401E380DA1005C6442 /* ComplexTextController.cpp */,
    1700                                 1CAD1F851E5CE7DA00AF2C2C /* FontCache.cpp */,
    17011712                        );
    17021713                        path = WebCore;
     
    27692780                                7CCE7F071A411AE600447C4C /* PageLoadBasic.cpp in Sources */,
    27702781                                7CCE7F081A411AE600447C4C /* PageLoadDidChangeLocationWithinPageForFrame.cpp in Sources */,
     2782                                3162AE9C1E6F2FF5000E4DBC /* GPUDevice.mm in Sources */,
    27712783                                7CCE7EC71A411A7E00447C4C /* PageVisibilityStateWithWindowChanges.mm in Sources */,
    27722784                                7CCE7F091A411AE600447C4C /* ParentFrame.cpp in Sources */,
Note: See TracChangeset for help on using the changeset viewer.