blob: cd1029d8534c0e8e9aa4ff3f06bcd444a2a31ea6 [file] [log] [blame]
Chia-I Wu30c78292014-08-04 10:08:08 +08001/*
2 * XGL
3 *
4 * Copyright (C) 2014 LunarG, Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included
14 * in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
24
25#include "icd.h"
Chia-I Wu09142132014-08-11 15:42:55 +080026#include "cmd.h"
Chia-I Wua207aba2014-08-05 15:13:37 +080027#include "dev.h"
Chia-I Wu75577d92014-08-11 10:54:33 +080028#include "dset.h"
Chia-I Wu9737a102014-08-07 07:59:51 +080029#include "event.h"
Chia-I Wubdf4c562014-08-07 06:36:33 +080030#include "fence.h"
Chia-I Wuac6ba132014-08-07 14:21:43 +080031#include "format.h"
Chia-I Wufeb441f2014-08-08 21:27:38 +080032#include "img.h"
Chia-I Wubec90a02014-08-06 12:33:03 +080033#include "gpu.h"
Chia-I Wuf9911eb2014-08-06 13:50:31 +080034#include "mem.h"
Chia-I Wu53fc6aa2014-08-06 14:22:51 +080035#include "obj.h"
Courtney Goeltzenleuchter06393c72014-08-20 15:39:51 -060036#include "pipeline.h"
Chia-I Wuf667a6a2014-08-07 14:15:01 +080037#include "query.h"
Chia-I Wue09b5362014-08-07 09:25:14 +080038#include "queue.h"
Chia-I Wu28b89962014-08-18 14:40:49 +080039#include "sampler.h"
Chia-I Wua5714e82014-08-11 15:33:42 +080040#include "state.h"
Chia-I Wu5a323262014-08-11 10:31:53 +080041#include "view.h"
Chia-I Wude2bb862014-08-19 14:32:47 +080042#include "dispatch.h"
Chia-I Wu30c78292014-08-04 10:08:08 +080043
Chia-I Wu30c78292014-08-04 10:08:08 +080044static XGL_RESULT XGLAPI intelCreateShader(
45 XGL_DEVICE device,
46 const XGL_SHADER_CREATE_INFO* pCreateInfo,
47 XGL_SHADER* pShader)
48{
49 return XGL_ERROR_UNAVAILABLE;
50}
51
Chia-I Wu6a42c2a2014-08-19 14:36:47 +080052static const struct icd_dispatch_table intel_normal_dispatch_table = {
Chia-I Wu30c78292014-08-04 10:08:08 +080053 .InitAndEnumerateGpus = xglInitAndEnumerateGpus,
54 .GetGpuInfo = intelGetGpuInfo,
55 .CreateDevice = intelCreateDevice,
56 .DestroyDevice = intelDestroyDevice,
57 .GetExtensionSupport = intelGetExtensionSupport,
58 .GetDeviceQueue = intelGetDeviceQueue,
59 .QueueSubmit = intelQueueSubmit,
60 .QueueSetGlobalMemReferences = intelQueueSetGlobalMemReferences,
61 .QueueWaitIdle = intelQueueWaitIdle,
62 .DeviceWaitIdle = intelDeviceWaitIdle,
63 .GetMemoryHeapCount = intelGetMemoryHeapCount,
64 .GetMemoryHeapInfo = intelGetMemoryHeapInfo,
65 .AllocMemory = intelAllocMemory,
66 .FreeMemory = intelFreeMemory,
67 .SetMemoryPriority = intelSetMemoryPriority,
68 .MapMemory = intelMapMemory,
69 .UnmapMemory = intelUnmapMemory,
70 .PinSystemMemory = intelPinSystemMemory,
71 .RemapVirtualMemoryPages = intelRemapVirtualMemoryPages,
72 .GetMultiGpuCompatibility = intelGetMultiGpuCompatibility,
73 .OpenSharedMemory = intelOpenSharedMemory,
74 .OpenSharedQueueSemaphore = intelOpenSharedQueueSemaphore,
75 .OpenPeerMemory = intelOpenPeerMemory,
76 .OpenPeerImage = intelOpenPeerImage,
77 .DestroyObject = intelDestroyObject,
78 .GetObjectInfo = intelGetObjectInfo,
79 .BindObjectMemory = intelBindObjectMemory,
80 .CreateFence = intelCreateFence,
81 .GetFenceStatus = intelGetFenceStatus,
82 .WaitForFences = intelWaitForFences,
83 .CreateQueueSemaphore = intelCreateQueueSemaphore,
84 .SignalQueueSemaphore = intelSignalQueueSemaphore,
85 .WaitQueueSemaphore = intelWaitQueueSemaphore,
86 .CreateEvent = intelCreateEvent,
87 .GetEventStatus = intelGetEventStatus,
88 .SetEvent = intelSetEvent,
89 .ResetEvent = intelResetEvent,
90 .CreateQueryPool = intelCreateQueryPool,
91 .GetQueryPoolResults = intelGetQueryPoolResults,
92 .GetFormatInfo = intelGetFormatInfo,
93 .CreateImage = intelCreateImage,
94 .GetImageSubresourceInfo = intelGetImageSubresourceInfo,
95 .CreateImageView = intelCreateImageView,
96 .CreateColorAttachmentView = intelCreateColorAttachmentView,
97 .CreateDepthStencilView = intelCreateDepthStencilView,
98 .CreateShader = intelCreateShader,
99 .CreateGraphicsPipeline = intelCreateGraphicsPipeline,
100 .CreateComputePipeline = intelCreateComputePipeline,
101 .StorePipeline = intelStorePipeline,
102 .LoadPipeline = intelLoadPipeline,
103 .CreatePipelineDelta = intelCreatePipelineDelta,
104 .CreateSampler = intelCreateSampler,
105 .CreateDescriptorSet = intelCreateDescriptorSet,
106 .BeginDescriptorSetUpdate = intelBeginDescriptorSetUpdate,
107 .EndDescriptorSetUpdate = intelEndDescriptorSetUpdate,
108 .AttachSamplerDescriptors = intelAttachSamplerDescriptors,
109 .AttachImageViewDescriptors = intelAttachImageViewDescriptors,
110 .AttachMemoryViewDescriptors = intelAttachMemoryViewDescriptors,
111 .AttachNestedDescriptors = intelAttachNestedDescriptors,
112 .ClearDescriptorSetSlots = intelClearDescriptorSetSlots,
113 .CreateViewportState = intelCreateViewportState,
114 .CreateRasterState = intelCreateRasterState,
115 .CreateMsaaState = intelCreateMsaaState,
116 .CreateColorBlendState = intelCreateColorBlendState,
117 .CreateDepthStencilState = intelCreateDepthStencilState,
118 .CreateCommandBuffer = intelCreateCommandBuffer,
119 .BeginCommandBuffer = intelBeginCommandBuffer,
120 .EndCommandBuffer = intelEndCommandBuffer,
121 .ResetCommandBuffer = intelResetCommandBuffer,
122 .CmdBindPipeline = intelCmdBindPipeline,
123 .CmdBindPipelineDelta = intelCmdBindPipelineDelta,
124 .CmdBindStateObject = intelCmdBindStateObject,
125 .CmdBindDescriptorSet = intelCmdBindDescriptorSet,
126 .CmdBindDynamicMemoryView = intelCmdBindDynamicMemoryView,
127 .CmdBindIndexData = intelCmdBindIndexData,
128 .CmdBindAttachments = intelCmdBindAttachments,
129 .CmdPrepareMemoryRegions = intelCmdPrepareMemoryRegions,
130 .CmdPrepareImages = intelCmdPrepareImages,
131 .CmdDraw = intelCmdDraw,
132 .CmdDrawIndexed = intelCmdDrawIndexed,
133 .CmdDrawIndirect = intelCmdDrawIndirect,
134 .CmdDrawIndexedIndirect = intelCmdDrawIndexedIndirect,
135 .CmdDispatch = intelCmdDispatch,
136 .CmdDispatchIndirect = intelCmdDispatchIndirect,
137 .CmdCopyMemory = intelCmdCopyMemory,
138 .CmdCopyImage = intelCmdCopyImage,
139 .CmdCopyMemoryToImage = intelCmdCopyMemoryToImage,
140 .CmdCopyImageToMemory = intelCmdCopyImageToMemory,
141 .CmdCloneImageData = intelCmdCloneImageData,
142 .CmdUpdateMemory = intelCmdUpdateMemory,
143 .CmdFillMemory = intelCmdFillMemory,
144 .CmdClearColorImage = intelCmdClearColorImage,
145 .CmdClearColorImageRaw = intelCmdClearColorImageRaw,
146 .CmdClearDepthStencil = intelCmdClearDepthStencil,
147 .CmdResolveImage = intelCmdResolveImage,
148 .CmdSetEvent = intelCmdSetEvent,
149 .CmdResetEvent = intelCmdResetEvent,
150 .CmdMemoryAtomic = intelCmdMemoryAtomic,
151 .CmdBeginQuery = intelCmdBeginQuery,
152 .CmdEndQuery = intelCmdEndQuery,
153 .CmdResetQueryPool = intelCmdResetQueryPool,
154 .CmdWriteTimestamp = intelCmdWriteTimestamp,
155 .CmdInitAtomicCounters = intelCmdInitAtomicCounters,
156 .CmdLoadAtomicCounters = intelCmdLoadAtomicCounters,
157 .CmdSaveAtomicCounters = intelCmdSaveAtomicCounters,
158 .DbgSetValidationLevel = intelDbgSetValidationLevel,
159 .DbgRegisterMsgCallback = xglDbgRegisterMsgCallback,
160 .DbgUnregisterMsgCallback = xglDbgUnregisterMsgCallback,
161 .DbgSetMessageFilter = intelDbgSetMessageFilter,
162 .DbgSetObjectTag = intelDbgSetObjectTag,
163 .DbgSetGlobalOption = xglDbgSetGlobalOption,
164 .DbgSetDeviceOption = intelDbgSetDeviceOption,
165 .CmdDbgMarkerBegin = intelCmdDbgMarkerBegin,
166 .CmdDbgMarkerEnd = intelCmdDbgMarkerEnd,
167};
168
Chia-I Wu6a42c2a2014-08-19 14:36:47 +0800169static const struct icd_dispatch_table intel_debug_dispatch_table = {
Chia-I Wu30c78292014-08-04 10:08:08 +0800170 .InitAndEnumerateGpus = xglInitAndEnumerateGpus,
171 .GetGpuInfo = intelGetGpuInfo,
172 .CreateDevice = intelCreateDevice,
173 .DestroyDevice = intelDestroyDevice,
174 .GetExtensionSupport = intelGetExtensionSupport,
175 .GetDeviceQueue = intelGetDeviceQueue,
176 .QueueSubmit = intelQueueSubmit,
177 .QueueSetGlobalMemReferences = intelQueueSetGlobalMemReferences,
178 .QueueWaitIdle = intelQueueWaitIdle,
179 .DeviceWaitIdle = intelDeviceWaitIdle,
180 .GetMemoryHeapCount = intelGetMemoryHeapCount,
181 .GetMemoryHeapInfo = intelGetMemoryHeapInfo,
182 .AllocMemory = intelAllocMemory,
183 .FreeMemory = intelFreeMemory,
184 .SetMemoryPriority = intelSetMemoryPriority,
185 .MapMemory = intelMapMemory,
186 .UnmapMemory = intelUnmapMemory,
187 .PinSystemMemory = intelPinSystemMemory,
188 .RemapVirtualMemoryPages = intelRemapVirtualMemoryPages,
189 .GetMultiGpuCompatibility = intelGetMultiGpuCompatibility,
190 .OpenSharedMemory = intelOpenSharedMemory,
191 .OpenSharedQueueSemaphore = intelOpenSharedQueueSemaphore,
192 .OpenPeerMemory = intelOpenPeerMemory,
193 .OpenPeerImage = intelOpenPeerImage,
194 .DestroyObject = intelDestroyObject,
195 .GetObjectInfo = intelGetObjectInfo,
196 .BindObjectMemory = intelBindObjectMemory,
197 .CreateFence = intelCreateFence,
198 .GetFenceStatus = intelGetFenceStatus,
199 .WaitForFences = intelWaitForFences,
200 .CreateQueueSemaphore = intelCreateQueueSemaphore,
201 .SignalQueueSemaphore = intelSignalQueueSemaphore,
202 .WaitQueueSemaphore = intelWaitQueueSemaphore,
203 .CreateEvent = intelCreateEvent,
204 .GetEventStatus = intelGetEventStatus,
205 .SetEvent = intelSetEvent,
206 .ResetEvent = intelResetEvent,
207 .CreateQueryPool = intelCreateQueryPool,
208 .GetQueryPoolResults = intelGetQueryPoolResults,
209 .GetFormatInfo = intelGetFormatInfo,
210 .CreateImage = intelCreateImage,
211 .GetImageSubresourceInfo = intelGetImageSubresourceInfo,
212 .CreateImageView = intelCreateImageView,
213 .CreateColorAttachmentView = intelCreateColorAttachmentView,
214 .CreateDepthStencilView = intelCreateDepthStencilView,
215 .CreateShader = intelCreateShader,
216 .CreateGraphicsPipeline = intelCreateGraphicsPipeline,
217 .CreateComputePipeline = intelCreateComputePipeline,
218 .StorePipeline = intelStorePipeline,
219 .LoadPipeline = intelLoadPipeline,
220 .CreatePipelineDelta = intelCreatePipelineDelta,
221 .CreateSampler = intelCreateSampler,
222 .CreateDescriptorSet = intelCreateDescriptorSet,
223 .BeginDescriptorSetUpdate = intelBeginDescriptorSetUpdate,
224 .EndDescriptorSetUpdate = intelEndDescriptorSetUpdate,
225 .AttachSamplerDescriptors = intelAttachSamplerDescriptors,
226 .AttachImageViewDescriptors = intelAttachImageViewDescriptors,
227 .AttachMemoryViewDescriptors = intelAttachMemoryViewDescriptors,
228 .AttachNestedDescriptors = intelAttachNestedDescriptors,
229 .ClearDescriptorSetSlots = intelClearDescriptorSetSlots,
230 .CreateViewportState = intelCreateViewportState,
231 .CreateRasterState = intelCreateRasterState,
232 .CreateMsaaState = intelCreateMsaaState,
233 .CreateColorBlendState = intelCreateColorBlendState,
234 .CreateDepthStencilState = intelCreateDepthStencilState,
235 .CreateCommandBuffer = intelCreateCommandBuffer,
236 .BeginCommandBuffer = intelBeginCommandBuffer,
237 .EndCommandBuffer = intelEndCommandBuffer,
238 .ResetCommandBuffer = intelResetCommandBuffer,
239 .CmdBindPipeline = intelCmdBindPipeline,
240 .CmdBindPipelineDelta = intelCmdBindPipelineDelta,
241 .CmdBindStateObject = intelCmdBindStateObject,
242 .CmdBindDescriptorSet = intelCmdBindDescriptorSet,
243 .CmdBindDynamicMemoryView = intelCmdBindDynamicMemoryView,
244 .CmdBindIndexData = intelCmdBindIndexData,
245 .CmdBindAttachments = intelCmdBindAttachments,
246 .CmdPrepareMemoryRegions = intelCmdPrepareMemoryRegions,
247 .CmdPrepareImages = intelCmdPrepareImages,
248 .CmdDraw = intelCmdDraw,
249 .CmdDrawIndexed = intelCmdDrawIndexed,
250 .CmdDrawIndirect = intelCmdDrawIndirect,
251 .CmdDrawIndexedIndirect = intelCmdDrawIndexedIndirect,
252 .CmdDispatch = intelCmdDispatch,
253 .CmdDispatchIndirect = intelCmdDispatchIndirect,
254 .CmdCopyMemory = intelCmdCopyMemory,
255 .CmdCopyImage = intelCmdCopyImage,
256 .CmdCopyMemoryToImage = intelCmdCopyMemoryToImage,
257 .CmdCopyImageToMemory = intelCmdCopyImageToMemory,
258 .CmdCloneImageData = intelCmdCloneImageData,
259 .CmdUpdateMemory = intelCmdUpdateMemory,
260 .CmdFillMemory = intelCmdFillMemory,
261 .CmdClearColorImage = intelCmdClearColorImage,
262 .CmdClearColorImageRaw = intelCmdClearColorImageRaw,
263 .CmdClearDepthStencil = intelCmdClearDepthStencil,
264 .CmdResolveImage = intelCmdResolveImage,
265 .CmdSetEvent = intelCmdSetEvent,
266 .CmdResetEvent = intelCmdResetEvent,
267 .CmdMemoryAtomic = intelCmdMemoryAtomic,
268 .CmdBeginQuery = intelCmdBeginQuery,
269 .CmdEndQuery = intelCmdEndQuery,
270 .CmdResetQueryPool = intelCmdResetQueryPool,
271 .CmdWriteTimestamp = intelCmdWriteTimestamp,
272 .CmdInitAtomicCounters = intelCmdInitAtomicCounters,
273 .CmdLoadAtomicCounters = intelCmdLoadAtomicCounters,
274 .CmdSaveAtomicCounters = intelCmdSaveAtomicCounters,
275 .DbgSetValidationLevel = intelDbgSetValidationLevel,
276 .DbgRegisterMsgCallback = xglDbgRegisterMsgCallback,
277 .DbgUnregisterMsgCallback = xglDbgUnregisterMsgCallback,
278 .DbgSetMessageFilter = intelDbgSetMessageFilter,
279 .DbgSetObjectTag = intelDbgSetObjectTag,
280 .DbgSetGlobalOption = xglDbgSetGlobalOption,
281 .DbgSetDeviceOption = intelDbgSetDeviceOption,
282 .CmdDbgMarkerBegin = intelCmdDbgMarkerBegin,
283 .CmdDbgMarkerEnd = intelCmdDbgMarkerEnd,
284};
Chia-I Wu6a42c2a2014-08-19 14:36:47 +0800285
286const struct icd_dispatch_table *intel_dispatch_get(bool debug)
287{
288 return (debug) ? &intel_debug_dispatch_table :
289 &intel_normal_dispatch_table;
290}