blob: 8fe87e2e8f771ebed2df642d5abe42e5726ab400 [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"
Courtney Goeltzenleuchter52ec3362014-08-19 11:52:02 -060040#include "shader.h"
Chia-I Wua5714e82014-08-11 15:33:42 +080041#include "state.h"
Chia-I Wu5a323262014-08-11 10:31:53 +080042#include "view.h"
Chia-I Wude2bb862014-08-19 14:32:47 +080043#include "dispatch.h"
Chia-I Wu30c78292014-08-04 10:08:08 +080044
Chia-I Wu30c78292014-08-04 10:08:08 +080045
Chia-I Wu6a42c2a2014-08-19 14:36:47 +080046static const struct icd_dispatch_table intel_normal_dispatch_table = {
Chia-I Wu30c78292014-08-04 10:08:08 +080047 .InitAndEnumerateGpus = xglInitAndEnumerateGpus,
48 .GetGpuInfo = intelGetGpuInfo,
49 .CreateDevice = intelCreateDevice,
50 .DestroyDevice = intelDestroyDevice,
51 .GetExtensionSupport = intelGetExtensionSupport,
52 .GetDeviceQueue = intelGetDeviceQueue,
53 .QueueSubmit = intelQueueSubmit,
54 .QueueSetGlobalMemReferences = intelQueueSetGlobalMemReferences,
55 .QueueWaitIdle = intelQueueWaitIdle,
56 .DeviceWaitIdle = intelDeviceWaitIdle,
57 .GetMemoryHeapCount = intelGetMemoryHeapCount,
58 .GetMemoryHeapInfo = intelGetMemoryHeapInfo,
59 .AllocMemory = intelAllocMemory,
60 .FreeMemory = intelFreeMemory,
61 .SetMemoryPriority = intelSetMemoryPriority,
62 .MapMemory = intelMapMemory,
63 .UnmapMemory = intelUnmapMemory,
64 .PinSystemMemory = intelPinSystemMemory,
65 .RemapVirtualMemoryPages = intelRemapVirtualMemoryPages,
66 .GetMultiGpuCompatibility = intelGetMultiGpuCompatibility,
67 .OpenSharedMemory = intelOpenSharedMemory,
68 .OpenSharedQueueSemaphore = intelOpenSharedQueueSemaphore,
69 .OpenPeerMemory = intelOpenPeerMemory,
70 .OpenPeerImage = intelOpenPeerImage,
71 .DestroyObject = intelDestroyObject,
72 .GetObjectInfo = intelGetObjectInfo,
73 .BindObjectMemory = intelBindObjectMemory,
74 .CreateFence = intelCreateFence,
75 .GetFenceStatus = intelGetFenceStatus,
76 .WaitForFences = intelWaitForFences,
77 .CreateQueueSemaphore = intelCreateQueueSemaphore,
78 .SignalQueueSemaphore = intelSignalQueueSemaphore,
79 .WaitQueueSemaphore = intelWaitQueueSemaphore,
80 .CreateEvent = intelCreateEvent,
81 .GetEventStatus = intelGetEventStatus,
82 .SetEvent = intelSetEvent,
83 .ResetEvent = intelResetEvent,
84 .CreateQueryPool = intelCreateQueryPool,
85 .GetQueryPoolResults = intelGetQueryPoolResults,
86 .GetFormatInfo = intelGetFormatInfo,
87 .CreateImage = intelCreateImage,
88 .GetImageSubresourceInfo = intelGetImageSubresourceInfo,
89 .CreateImageView = intelCreateImageView,
90 .CreateColorAttachmentView = intelCreateColorAttachmentView,
91 .CreateDepthStencilView = intelCreateDepthStencilView,
92 .CreateShader = intelCreateShader,
93 .CreateGraphicsPipeline = intelCreateGraphicsPipeline,
94 .CreateComputePipeline = intelCreateComputePipeline,
95 .StorePipeline = intelStorePipeline,
96 .LoadPipeline = intelLoadPipeline,
97 .CreatePipelineDelta = intelCreatePipelineDelta,
98 .CreateSampler = intelCreateSampler,
99 .CreateDescriptorSet = intelCreateDescriptorSet,
100 .BeginDescriptorSetUpdate = intelBeginDescriptorSetUpdate,
101 .EndDescriptorSetUpdate = intelEndDescriptorSetUpdate,
102 .AttachSamplerDescriptors = intelAttachSamplerDescriptors,
103 .AttachImageViewDescriptors = intelAttachImageViewDescriptors,
104 .AttachMemoryViewDescriptors = intelAttachMemoryViewDescriptors,
105 .AttachNestedDescriptors = intelAttachNestedDescriptors,
106 .ClearDescriptorSetSlots = intelClearDescriptorSetSlots,
107 .CreateViewportState = intelCreateViewportState,
108 .CreateRasterState = intelCreateRasterState,
109 .CreateMsaaState = intelCreateMsaaState,
110 .CreateColorBlendState = intelCreateColorBlendState,
111 .CreateDepthStencilState = intelCreateDepthStencilState,
112 .CreateCommandBuffer = intelCreateCommandBuffer,
113 .BeginCommandBuffer = intelBeginCommandBuffer,
114 .EndCommandBuffer = intelEndCommandBuffer,
115 .ResetCommandBuffer = intelResetCommandBuffer,
116 .CmdBindPipeline = intelCmdBindPipeline,
117 .CmdBindPipelineDelta = intelCmdBindPipelineDelta,
118 .CmdBindStateObject = intelCmdBindStateObject,
119 .CmdBindDescriptorSet = intelCmdBindDescriptorSet,
120 .CmdBindDynamicMemoryView = intelCmdBindDynamicMemoryView,
121 .CmdBindIndexData = intelCmdBindIndexData,
122 .CmdBindAttachments = intelCmdBindAttachments,
123 .CmdPrepareMemoryRegions = intelCmdPrepareMemoryRegions,
124 .CmdPrepareImages = intelCmdPrepareImages,
125 .CmdDraw = intelCmdDraw,
126 .CmdDrawIndexed = intelCmdDrawIndexed,
127 .CmdDrawIndirect = intelCmdDrawIndirect,
128 .CmdDrawIndexedIndirect = intelCmdDrawIndexedIndirect,
129 .CmdDispatch = intelCmdDispatch,
130 .CmdDispatchIndirect = intelCmdDispatchIndirect,
131 .CmdCopyMemory = intelCmdCopyMemory,
132 .CmdCopyImage = intelCmdCopyImage,
133 .CmdCopyMemoryToImage = intelCmdCopyMemoryToImage,
134 .CmdCopyImageToMemory = intelCmdCopyImageToMemory,
135 .CmdCloneImageData = intelCmdCloneImageData,
136 .CmdUpdateMemory = intelCmdUpdateMemory,
137 .CmdFillMemory = intelCmdFillMemory,
138 .CmdClearColorImage = intelCmdClearColorImage,
139 .CmdClearColorImageRaw = intelCmdClearColorImageRaw,
140 .CmdClearDepthStencil = intelCmdClearDepthStencil,
141 .CmdResolveImage = intelCmdResolveImage,
142 .CmdSetEvent = intelCmdSetEvent,
143 .CmdResetEvent = intelCmdResetEvent,
144 .CmdMemoryAtomic = intelCmdMemoryAtomic,
145 .CmdBeginQuery = intelCmdBeginQuery,
146 .CmdEndQuery = intelCmdEndQuery,
147 .CmdResetQueryPool = intelCmdResetQueryPool,
148 .CmdWriteTimestamp = intelCmdWriteTimestamp,
149 .CmdInitAtomicCounters = intelCmdInitAtomicCounters,
150 .CmdLoadAtomicCounters = intelCmdLoadAtomicCounters,
151 .CmdSaveAtomicCounters = intelCmdSaveAtomicCounters,
152 .DbgSetValidationLevel = intelDbgSetValidationLevel,
153 .DbgRegisterMsgCallback = xglDbgRegisterMsgCallback,
154 .DbgUnregisterMsgCallback = xglDbgUnregisterMsgCallback,
155 .DbgSetMessageFilter = intelDbgSetMessageFilter,
156 .DbgSetObjectTag = intelDbgSetObjectTag,
157 .DbgSetGlobalOption = xglDbgSetGlobalOption,
158 .DbgSetDeviceOption = intelDbgSetDeviceOption,
159 .CmdDbgMarkerBegin = intelCmdDbgMarkerBegin,
160 .CmdDbgMarkerEnd = intelCmdDbgMarkerEnd,
161};
162
Chia-I Wu6a42c2a2014-08-19 14:36:47 +0800163static const struct icd_dispatch_table intel_debug_dispatch_table = {
Chia-I Wu30c78292014-08-04 10:08:08 +0800164 .InitAndEnumerateGpus = xglInitAndEnumerateGpus,
165 .GetGpuInfo = intelGetGpuInfo,
166 .CreateDevice = intelCreateDevice,
167 .DestroyDevice = intelDestroyDevice,
168 .GetExtensionSupport = intelGetExtensionSupport,
169 .GetDeviceQueue = intelGetDeviceQueue,
170 .QueueSubmit = intelQueueSubmit,
171 .QueueSetGlobalMemReferences = intelQueueSetGlobalMemReferences,
172 .QueueWaitIdle = intelQueueWaitIdle,
173 .DeviceWaitIdle = intelDeviceWaitIdle,
174 .GetMemoryHeapCount = intelGetMemoryHeapCount,
175 .GetMemoryHeapInfo = intelGetMemoryHeapInfo,
176 .AllocMemory = intelAllocMemory,
177 .FreeMemory = intelFreeMemory,
178 .SetMemoryPriority = intelSetMemoryPriority,
179 .MapMemory = intelMapMemory,
180 .UnmapMemory = intelUnmapMemory,
181 .PinSystemMemory = intelPinSystemMemory,
182 .RemapVirtualMemoryPages = intelRemapVirtualMemoryPages,
183 .GetMultiGpuCompatibility = intelGetMultiGpuCompatibility,
184 .OpenSharedMemory = intelOpenSharedMemory,
185 .OpenSharedQueueSemaphore = intelOpenSharedQueueSemaphore,
186 .OpenPeerMemory = intelOpenPeerMemory,
187 .OpenPeerImage = intelOpenPeerImage,
188 .DestroyObject = intelDestroyObject,
189 .GetObjectInfo = intelGetObjectInfo,
190 .BindObjectMemory = intelBindObjectMemory,
191 .CreateFence = intelCreateFence,
192 .GetFenceStatus = intelGetFenceStatus,
193 .WaitForFences = intelWaitForFences,
194 .CreateQueueSemaphore = intelCreateQueueSemaphore,
195 .SignalQueueSemaphore = intelSignalQueueSemaphore,
196 .WaitQueueSemaphore = intelWaitQueueSemaphore,
197 .CreateEvent = intelCreateEvent,
198 .GetEventStatus = intelGetEventStatus,
199 .SetEvent = intelSetEvent,
200 .ResetEvent = intelResetEvent,
201 .CreateQueryPool = intelCreateQueryPool,
202 .GetQueryPoolResults = intelGetQueryPoolResults,
203 .GetFormatInfo = intelGetFormatInfo,
204 .CreateImage = intelCreateImage,
205 .GetImageSubresourceInfo = intelGetImageSubresourceInfo,
206 .CreateImageView = intelCreateImageView,
207 .CreateColorAttachmentView = intelCreateColorAttachmentView,
208 .CreateDepthStencilView = intelCreateDepthStencilView,
209 .CreateShader = intelCreateShader,
210 .CreateGraphicsPipeline = intelCreateGraphicsPipeline,
211 .CreateComputePipeline = intelCreateComputePipeline,
212 .StorePipeline = intelStorePipeline,
213 .LoadPipeline = intelLoadPipeline,
214 .CreatePipelineDelta = intelCreatePipelineDelta,
215 .CreateSampler = intelCreateSampler,
216 .CreateDescriptorSet = intelCreateDescriptorSet,
217 .BeginDescriptorSetUpdate = intelBeginDescriptorSetUpdate,
218 .EndDescriptorSetUpdate = intelEndDescriptorSetUpdate,
219 .AttachSamplerDescriptors = intelAttachSamplerDescriptors,
220 .AttachImageViewDescriptors = intelAttachImageViewDescriptors,
221 .AttachMemoryViewDescriptors = intelAttachMemoryViewDescriptors,
222 .AttachNestedDescriptors = intelAttachNestedDescriptors,
223 .ClearDescriptorSetSlots = intelClearDescriptorSetSlots,
224 .CreateViewportState = intelCreateViewportState,
225 .CreateRasterState = intelCreateRasterState,
226 .CreateMsaaState = intelCreateMsaaState,
227 .CreateColorBlendState = intelCreateColorBlendState,
228 .CreateDepthStencilState = intelCreateDepthStencilState,
229 .CreateCommandBuffer = intelCreateCommandBuffer,
230 .BeginCommandBuffer = intelBeginCommandBuffer,
231 .EndCommandBuffer = intelEndCommandBuffer,
232 .ResetCommandBuffer = intelResetCommandBuffer,
233 .CmdBindPipeline = intelCmdBindPipeline,
234 .CmdBindPipelineDelta = intelCmdBindPipelineDelta,
235 .CmdBindStateObject = intelCmdBindStateObject,
236 .CmdBindDescriptorSet = intelCmdBindDescriptorSet,
237 .CmdBindDynamicMemoryView = intelCmdBindDynamicMemoryView,
238 .CmdBindIndexData = intelCmdBindIndexData,
239 .CmdBindAttachments = intelCmdBindAttachments,
240 .CmdPrepareMemoryRegions = intelCmdPrepareMemoryRegions,
241 .CmdPrepareImages = intelCmdPrepareImages,
242 .CmdDraw = intelCmdDraw,
243 .CmdDrawIndexed = intelCmdDrawIndexed,
244 .CmdDrawIndirect = intelCmdDrawIndirect,
245 .CmdDrawIndexedIndirect = intelCmdDrawIndexedIndirect,
246 .CmdDispatch = intelCmdDispatch,
247 .CmdDispatchIndirect = intelCmdDispatchIndirect,
248 .CmdCopyMemory = intelCmdCopyMemory,
249 .CmdCopyImage = intelCmdCopyImage,
250 .CmdCopyMemoryToImage = intelCmdCopyMemoryToImage,
251 .CmdCopyImageToMemory = intelCmdCopyImageToMemory,
252 .CmdCloneImageData = intelCmdCloneImageData,
253 .CmdUpdateMemory = intelCmdUpdateMemory,
254 .CmdFillMemory = intelCmdFillMemory,
255 .CmdClearColorImage = intelCmdClearColorImage,
256 .CmdClearColorImageRaw = intelCmdClearColorImageRaw,
257 .CmdClearDepthStencil = intelCmdClearDepthStencil,
258 .CmdResolveImage = intelCmdResolveImage,
259 .CmdSetEvent = intelCmdSetEvent,
260 .CmdResetEvent = intelCmdResetEvent,
261 .CmdMemoryAtomic = intelCmdMemoryAtomic,
262 .CmdBeginQuery = intelCmdBeginQuery,
263 .CmdEndQuery = intelCmdEndQuery,
264 .CmdResetQueryPool = intelCmdResetQueryPool,
265 .CmdWriteTimestamp = intelCmdWriteTimestamp,
266 .CmdInitAtomicCounters = intelCmdInitAtomicCounters,
267 .CmdLoadAtomicCounters = intelCmdLoadAtomicCounters,
268 .CmdSaveAtomicCounters = intelCmdSaveAtomicCounters,
269 .DbgSetValidationLevel = intelDbgSetValidationLevel,
270 .DbgRegisterMsgCallback = xglDbgRegisterMsgCallback,
271 .DbgUnregisterMsgCallback = xglDbgUnregisterMsgCallback,
272 .DbgSetMessageFilter = intelDbgSetMessageFilter,
273 .DbgSetObjectTag = intelDbgSetObjectTag,
274 .DbgSetGlobalOption = xglDbgSetGlobalOption,
275 .DbgSetDeviceOption = intelDbgSetDeviceOption,
276 .CmdDbgMarkerBegin = intelCmdDbgMarkerBegin,
277 .CmdDbgMarkerEnd = intelCmdDbgMarkerEnd,
278};
Chia-I Wu6a42c2a2014-08-19 14:36:47 +0800279
280const struct icd_dispatch_table *intel_dispatch_get(bool debug)
281{
282 return (debug) ? &intel_debug_dispatch_table :
283 &intel_normal_dispatch_table;
284}