blob: fe911d808e469eb41b3a5250306ca1b2e7a55e7e [file] [log] [blame]
José Fonsecaf6b0dfe2012-04-23 00:42:44 +01001/**************************************************************************
2 *
3 * Copyright 2011 Jose Fonseca
4 * All Rights Reserved.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * 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 THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 * THE SOFTWARE.
23 *
24 **************************************************************************/
25
Jose Fonseca9653f952015-05-19 16:32:43 +010026#pragma once
José Fonsecaf6b0dfe2012-04-23 00:42:44 +010027
28
José Fonsecad63a3612012-05-08 23:41:35 +010029#include <iostream>
30
José Fonseca1d4fd142012-11-28 15:06:22 +000031#include <windows.h>
32
Zack Rusin86bd4992015-03-03 21:50:43 -050033#ifdef HAVE_DXGI
34#include <dxgiformat.h>
35#endif
36
José Fonsecad63a3612012-05-08 23:41:35 +010037
José Fonsecaff65c912015-01-16 09:39:52 +000038struct IDirect3DDevice7;
José Fonsecacbb86172012-12-12 07:38:42 +000039struct IDirect3DDevice8;
José Fonsecaa8a501a2012-04-23 12:09:56 +010040struct IDirect3DDevice9;
Jose Fonsecae39d56e2015-07-16 12:31:10 +010041struct IDirect3DSwapChain9;
José Fonseca29d4bda2014-02-28 17:50:24 +000042struct IDXGISwapChain;
José Fonseca944088e2012-11-20 14:47:03 +000043struct ID3D10Device;
José Fonseca29d4bda2014-02-28 17:50:24 +000044struct ID3D10Resource;
José Fonseca5773beb2012-11-14 11:46:58 +000045struct ID3D11DeviceContext;
José Fonseca00dc2f12014-06-12 19:18:11 +010046struct ID3D11Resource;
José Fonsecaf6b0dfe2012-04-23 00:42:44 +010047
48
Jose Fonsecae8ba0792015-05-01 12:38:03 +010049class StateWriter;
José Fonseca65ba4972012-11-28 12:56:01 +000050
José Fonsecaf6b0dfe2012-04-23 00:42:44 +010051namespace image {
52 class Image;
53}
54
55
56namespace d3dstate {
57
58
José Fonseca1d4fd142012-11-28 15:06:22 +000059extern const GUID GUID_D3DSTATE;
60
61
José Fonseca0386c032013-11-19 17:28:58 +000062/*
José Fonsecaff65c912015-01-16 09:39:52 +000063 * D3D7
64 */
65
66image::Image *
67getRenderTargetImage(IDirect3DDevice7 *pDevice);
68
69void
Jose Fonsecae8ba0792015-05-01 12:38:03 +010070dumpFramebuffer(StateWriter &writer, IDirect3DDevice7 *pDevice);
José Fonsecaff65c912015-01-16 09:39:52 +000071
72void
Jose Fonsecae8ba0792015-05-01 12:38:03 +010073dumpDevice(StateWriter &writer, IDirect3DDevice7 *pDevice);
José Fonsecaff65c912015-01-16 09:39:52 +000074
75
76/*
José Fonseca0386c032013-11-19 17:28:58 +000077 * D3D8
78 */
79
José Fonsecaf6b0dfe2012-04-23 00:42:44 +010080image::Image *
José Fonsecacbb86172012-12-12 07:38:42 +000081getRenderTargetImage(IDirect3DDevice8 *pDevice);
82
83void
Jose Fonsecae8ba0792015-05-01 12:38:03 +010084dumpFramebuffer(StateWriter &writer, IDirect3DDevice8 *pDevice);
José Fonsecacbb86172012-12-12 07:38:42 +000085
86void
Jose Fonsecae8ba0792015-05-01 12:38:03 +010087dumpDevice(StateWriter &writer, IDirect3DDevice8 *pDevice);
José Fonsecacbb86172012-12-12 07:38:42 +000088
89
José Fonseca0386c032013-11-19 17:28:58 +000090/*
91 * D3D9
92 */
93
José Fonsecacbb86172012-12-12 07:38:42 +000094image::Image *
Jose Fonsecae39d56e2015-07-16 12:31:10 +010095getRenderTargetImage(IDirect3DSwapChain9 *pSwapChain);
José Fonsecaf6b0dfe2012-04-23 00:42:44 +010096
José Fonsecad63a3612012-05-08 23:41:35 +010097void
Jose Fonsecae8ba0792015-05-01 12:38:03 +010098dumpTextures(StateWriter &writer, IDirect3DDevice9 *pDevice);
José Fonseca0386c032013-11-19 17:28:58 +000099
100void
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100101dumpFramebuffer(StateWriter &writer, IDirect3DDevice9 *pDevice);
José Fonseca9d8029d2012-12-05 12:00:37 +0000102
103void
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100104dumpDevice(StateWriter &writer, IDirect3DDevice9 *pDevice);
José Fonsecad63a3612012-05-08 23:41:35 +0100105
Jose Fonsecae39d56e2015-07-16 12:31:10 +0100106image::Image *
107getRenderTargetImage(IDirect3DDevice9 *pDevice);
108
109void
110dumpDevice(StateWriter &writer, IDirect3DSwapChain9 *pSwapChain);
111
José Fonsecad63a3612012-05-08 23:41:35 +0100112
Zack Rusin86bd4992015-03-03 21:50:43 -0500113#ifdef HAVE_DXGI
114
115
José Fonseca0386c032013-11-19 17:28:58 +0000116/*
José Fonseca29d4bda2014-02-28 17:50:24 +0000117 * DXGI
118 */
119
120image::Image *
121getRenderTargetImage(IDXGISwapChain *pSwapChain);
122
123void
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100124dumpDevice(StateWriter &writer, IDXGISwapChain *pSwapChain);
José Fonseca29d4bda2014-02-28 17:50:24 +0000125
126
127/*
José Fonseca0386c032013-11-19 17:28:58 +0000128 * D3D10
129 */
130
José Fonseca5773beb2012-11-14 11:46:58 +0000131image::Image *
Jose Fonsecaf0045302015-09-21 11:23:02 +0100132getRenderTargetImage(ID3D10Device *pDevice,
133 DXGI_FORMAT *dxgiFormat = 0);
José Fonseca944088e2012-11-20 14:47:03 +0000134
135void
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100136dumpTextures(StateWriter &writer, ID3D10Device *pDevice);
José Fonseca283551a2013-07-03 15:48:30 +0100137
138void
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100139dumpFramebuffer(StateWriter &writer, ID3D10Device *pDevice);
José Fonseca65ba4972012-11-28 12:56:01 +0000140
141void
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100142dumpDevice(StateWriter &writer, ID3D10Device *pDevice);
José Fonseca944088e2012-11-20 14:47:03 +0000143
144
José Fonseca0386c032013-11-19 17:28:58 +0000145/*
146 * D3D11
147 */
148
José Fonseca944088e2012-11-20 14:47:03 +0000149image::Image *
Zack Rusin86bd4992015-03-03 21:50:43 -0500150getRenderTargetImage(ID3D11DeviceContext *pDeviceContext,
151 DXGI_FORMAT *dxgiFormat = 0);
José Fonseca5773beb2012-11-14 11:46:58 +0000152
153void
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100154dumpTextures(StateWriter &writer, ID3D11DeviceContext *pDeviceContext);
José Fonsecaea39b2c2013-07-03 16:02:03 +0100155
156void
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100157dumpFramebuffer(StateWriter &writer, ID3D11DeviceContext *pDeviceContext);
José Fonseca1592ad22012-12-04 13:04:14 +0000158
159void
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100160dumpDevice(StateWriter &writer, ID3D11DeviceContext *pDeviceContext);
José Fonseca5773beb2012-11-14 11:46:58 +0000161
162
Zack Rusin86bd4992015-03-03 21:50:43 -0500163#endif /* HAVE_DXGI */
164
165
José Fonsecaf6b0dfe2012-04-23 00:42:44 +0100166} /* namespace d3dstate */
167
168