| /************************************************************************** |
| * |
| * Copyright 2010 Luca Barbieri |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining |
| * a copy of this software and associated documentation files (the |
| * "Software"), to deal in the Software without restriction, including |
| * without limitation the rights to use, copy, modify, merge, publish, |
| * distribute, sublicense, and/or sell copies of the Software, and to |
| * permit persons to whom the Software is furnished to do so, subject to |
| * the following conditions: |
| * |
| * The above copyright notice and this permission notice (including the |
| * next paragraph) shall be included in all copies or substantial |
| * portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
| * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE |
| * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
| * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
| * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| * |
| **************************************************************************/ |
| |
| /* Header for all COM-based Gallium APIs and state trackers */ |
| |
| import "oaidl.idl"; |
| import "ocidl.idl"; |
| |
| [object, local, uuid("481c9372-795f-4630-bd5b-1f46d33cc28b")] |
| interface IGalliumAdapter : IUnknown |
| { |
| struct pipe_screen* GetGalliumScreen(); |
| struct pipe_screen* GetGalliumReferenceSoftwareScreen(); |
| struct pipe_screen* GetGalliumFastSoftwareScreen(); |
| } |
| |
| [object, local, uuid("2c0f7e72-d9fe-4e7b-9fee-d476695ad5d9")] |
| interface IGalliumDevice : IUnknown |
| { |
| // turn Gallium resource into API resource |
| HRESULT OpenGalliumResource( |
| [in] struct pipe_resource* resource, |
| [out] IUnknown** api_resource |
| ); |
| |
| /* returns the Gallium context used by the device |
| * can return NULL if the device uses multiple contexts or doesn't want to implement GetGalliumContext() |
| * we have this function because often using one context is faster than using more (or it's the only working option) |
| */ |
| struct pipe_context* GetGalliumContext(); |
| |
| // restore the context state after using the Gallium context for something else |
| // does nothing if GetGalliumContext returns null |
| void RestoreGalliumState(); |
| |
| /* like RestoreGalliumState, but ignores: |
| * - constant buffers |
| * - non-PS samplers and shader resource views |
| * - blend color, sample mask |
| * - scissor |
| * - index buffer |
| * |
| * This is intended to restore state after a blit-like operation. |
| */ |
| void RestoreGalliumStateBlitOnly(); |
| }; |
| |
| [object, local, uuid("61934787-7aea-412c-8c72-8afe6a33d622")] |
| interface IGalliumResource : IUnknown |
| { |
| struct pipe_resource* GetGalliumResource(); |
| }; |
| |