25ad3885f92caaccb34d8b735aa6a7898ba26d9c
[WebKit-https.git] / Source / WebCore / platform / graphics / metal / GPULegacyTextureDescriptorMetal.mm
1 /*
2  * Copyright (C) 2017 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #import "config.h"
27 #import "GPULegacyTextureDescriptor.h"
28
29 #if ENABLE(WEBMETAL)
30
31 #import "Logging.h"
32 #import <Metal/Metal.h>
33
34 namespace WebCore {
35
36 GPULegacyTextureDescriptor::GPULegacyTextureDescriptor(unsigned pixelFormat, unsigned width, unsigned height, bool mipmapped)
37     : m_metal { [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:static_cast<MTLPixelFormat>(pixelFormat) width:width height:height mipmapped:mipmapped] }
38 {
39     LOG(WebMetal, "GPUTextureDescriptor::GPUTextureDescriptor()");
40 }
41
42 unsigned GPULegacyTextureDescriptor::width() const
43 {
44     return [m_metal width];
45 }
46
47 void GPULegacyTextureDescriptor::setWidth(unsigned newWidth) const
48 {
49     ASSERT(m_metal);
50     [m_metal setWidth:newWidth];
51 }
52
53 unsigned GPULegacyTextureDescriptor::height() const
54 {
55     return [m_metal height];
56 }
57
58 void GPULegacyTextureDescriptor::setHeight(unsigned newHeight) const
59 {
60     ASSERT(m_metal);
61     [m_metal setHeight:newHeight];
62 }
63
64 unsigned GPULegacyTextureDescriptor::sampleCount() const
65 {
66     return [m_metal sampleCount];
67 }
68
69 void GPULegacyTextureDescriptor::setSampleCount(unsigned newSampleCount) const
70 {
71     ASSERT(m_metal);
72     [m_metal setSampleCount:newSampleCount];
73 }
74
75 unsigned GPULegacyTextureDescriptor::textureType() const
76 {
77     return [m_metal textureType];
78 }
79
80 void GPULegacyTextureDescriptor::setTextureType(unsigned newTextureType) const
81 {
82     ASSERT(m_metal);
83     [m_metal setTextureType:static_cast<MTLTextureType>(newTextureType)];
84 }
85
86 unsigned GPULegacyTextureDescriptor::storageMode() const
87 {
88     return [m_metal storageMode];
89 }
90
91 void GPULegacyTextureDescriptor::setStorageMode(unsigned newStorageMode) const
92 {
93     [m_metal setStorageMode:static_cast<MTLStorageMode>(newStorageMode)];
94 }
95
96 unsigned GPULegacyTextureDescriptor::usage() const
97 {
98     return [m_metal usage];
99 }
100
101 void GPULegacyTextureDescriptor::setUsage(unsigned newUsage) const
102 {
103     ASSERT(m_metal);
104     [m_metal setUsage:newUsage];
105 }
106
107 MTLTextureDescriptor *GPULegacyTextureDescriptor::metal() const
108 {
109     return m_metal.get();
110 }
111
112 } // namespace WebCore
113
114 #endif