2
|
1 |
/*
|
|
2 |
* Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
|
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
4 |
*
|
|
5 |
* This code is free software; you can redistribute it and/or modify it
|
|
6 |
* under the terms of the GNU General Public License version 2 only, as
|
|
7 |
* published by the Free Software Foundation. Sun designates this
|
|
8 |
* particular file as subject to the "Classpath" exception as provided
|
|
9 |
* by Sun in the LICENSE file that accompanied this code.
|
|
10 |
*
|
|
11 |
* This code is distributed in the hope that it will be useful, but WITHOUT
|
|
12 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
13 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
14 |
* version 2 for more details (a copy is included in the LICENSE file that
|
|
15 |
* accompanied this code).
|
|
16 |
*
|
|
17 |
* You should have received a copy of the GNU General Public License version
|
|
18 |
* 2 along with this work; if not, write to the Free Software Foundation,
|
|
19 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
20 |
*
|
|
21 |
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
|
22 |
* CA 95054 USA or visit www.sun.com if you need additional information or
|
|
23 |
* have any questions.
|
|
24 |
*/
|
|
25 |
|
|
26 |
#ifndef D3DCONTEXT_H
|
|
27 |
#define D3DCONTEXT_H
|
|
28 |
|
|
29 |
#include "java_awt_Transparency.h"
|
|
30 |
#include "sun_java2d_d3d_D3DContext.h"
|
|
31 |
#include "ddrawObject.h"
|
|
32 |
extern "C" {
|
|
33 |
#include "glyphblitting.h"
|
|
34 |
#include "AccelGlyphCache.h"
|
|
35 |
}
|
|
36 |
#include "j2d_md.h"
|
|
37 |
|
|
38 |
|
|
39 |
// - State switching optimizations -----------------------------------
|
|
40 |
|
|
41 |
/**
|
|
42 |
* The goal is to reduce device state switching as much as possible.
|
|
43 |
* This means: don't reset the texture if not needed, don't change
|
|
44 |
* the texture stage states unless necessary.
|
|
45 |
* For this we need to track the current device state. So each operation
|
|
46 |
* supplies its own operation type to BeginScene, which updates the state
|
|
47 |
* as necessary.
|
|
48 |
*
|
|
49 |
* Another optimization is to use a single vertex format for
|
|
50 |
* all primitives.
|
|
51 |
*
|
|
52 |
* See D3DContext::UpdateState() and D3DContext::BeginScene() for
|
|
53 |
* more information.
|
|
54 |
*/
|
|
55 |
|
|
56 |
// The state is undefined, assume that complete initialization is
|
|
57 |
// needed.
|
|
58 |
#define STATE_UNDEFINED (0 << 0)
|
|
59 |
// Current state uses texture mapping
|
|
60 |
#define STATE_TEXTURE (1 << 0)
|
|
61 |
// Texture stage state which is used when mask is involved
|
|
62 |
// (text rendering, maskfill)
|
|
63 |
#define STATE_TEXTURE_STAGE_MASK (1 << 1)
|
|
64 |
// Texture stage state which is used when doing texture
|
|
65 |
// mapping in blits
|
|
66 |
#define STATE_TEXTURE_STAGE_BLIT (1 << 2)
|
|
67 |
// Texture stage state which is used when not doing
|
|
68 |
// texture mapping, only use diffuse color
|
|
69 |
#define STATE_TEXTURE_STAGE_POLY (1 << 3)
|
|
70 |
// Texture mapping operation which involves mask texture
|
|
71 |
#define STATE_MASKOP (STATE_TEXTURE|STATE_TEXTURE_STAGE_MASK)
|
|
72 |
// Texture mapping operation which involves image texture
|
|
73 |
#define STATE_BLITOP (STATE_TEXTURE|STATE_TEXTURE_STAGE_BLIT)
|
|
74 |
// Rendering operation which doesn't use texture mapping
|
|
75 |
#define STATE_RENDEROP (STATE_TEXTURE_STAGE_POLY)
|
|
76 |
|
|
77 |
// The max. stage number we currently use (could not be
|
|
78 |
// larger than 7)
|
|
79 |
#define MAX_USED_TEXTURE_STAGE 0
|
|
80 |
|
|
81 |
// - Texture pixel format table -------------------------------------
|
|
82 |
#define TR_OPAQUE java_awt_Transparency_OPAQUE
|
|
83 |
#define TR_BITMASK java_awt_Transparency_BITMASK
|
|
84 |
#define TR_TRANSLUCENT java_awt_Transparency_TRANSLUCENT
|
|
85 |
|
|
86 |
// depth indices for the D3DTextureTable type
|
|
87 |
#define DEPTH16_IDX 0
|
|
88 |
#define DEPTH24_IDX 1
|
|
89 |
#define DEPTH32_IDX 2
|
|
90 |
#define DEPTH_MAX_IDX 3
|
|
91 |
|
|
92 |
// corresponding transparency indices for the D3DTextureTable type
|
|
93 |
#define TR_OPAQUE_IDX 0
|
|
94 |
#define TR_BITMASK_IDX 1
|
|
95 |
#define TR_TRANSLUCENT_IDX 2
|
|
96 |
#define TR_MAX_IDX 3
|
|
97 |
|
|
98 |
typedef struct
|
|
99 |
{
|
|
100 |
DDPIXELFORMAT pddpf;
|
|
101 |
jint pfType;
|
|
102 |
} D3DTextureTableCell;
|
|
103 |
|
|
104 |
// texture table:
|
|
105 |
// [transparency={OPAQUE,BITMASK,TRANCLUCENT},depth={16,24,32}]
|
|
106 |
typedef D3DTextureTableCell D3DTextureTable[TR_MAX_IDX][DEPTH_MAX_IDX];
|
|
107 |
|
|
108 |
// - D3DContext class -----------------------------------------------
|
|
109 |
|
|
110 |
/**
|
|
111 |
* This class provides the following functionality:
|
|
112 |
* - holds the state of D3DContext java class (current pixel color,
|
|
113 |
* alpha compositing mode, extra alpha)
|
|
114 |
* - provides access to IDirect3DDevice7 interface (creation,
|
|
115 |
* disposal, exclusive access)
|
|
116 |
* - handles state changes of the direct3d device (transform,
|
|
117 |
* compositing mode, current texture)
|
|
118 |
* - provides means of creating textures, plain surfaces
|
|
119 |
* - holds a glyph cache texture for the associated device
|
|
120 |
* - implements primitives batching mechanism
|
|
121 |
*/
|
|
122 |
class D3DContext {
|
|
123 |
public:
|
|
124 |
/**
|
|
125 |
* Creates and returns D3DContext instance. If created context was
|
|
126 |
* unable to initialize d3d device or if the device tests failed,
|
|
127 |
* returns NULL.
|
|
128 |
*/
|
|
129 |
static D3DContext* CreateD3DContext(DDraw *ddObject, DXObject* dxObject);
|
|
130 |
/**
|
|
131 |
* Releases the old device (if there was one) and all associated
|
|
132 |
* resources, re-creates, initializes and tests the new device.
|
|
133 |
*
|
|
134 |
* If the device doesn't pass the test, it's released.
|
|
135 |
*
|
|
136 |
* Used when the context is first created, and then after a
|
|
137 |
* display change event.
|
|
138 |
*
|
|
139 |
* Note that this method also does the necessary registry checks,
|
|
140 |
* and if the registry shows that we've crashed when attempting
|
|
141 |
* to initialize and test the device last time, it doesn't attempt
|
|
142 |
* to create/init/test the device.
|
|
143 |
*/
|
|
144 |
void CreateD3DDevice();
|
|
145 |
void Release3DDevice();
|
|
146 |
virtual ~D3DContext();
|
|
147 |
|
|
148 |
/**
|
|
149 |
* Stores a weak reference of passed D3DContext object.
|
|
150 |
* This method is called from _getNativeDeviceCaps method, and does the
|
|
151 |
* association of the native D3DContext with the corresponding java object.
|
|
152 |
* We need a reference to the java object so it can be notified when
|
|
153 |
* the native context is released or recreated.
|
|
154 |
*
|
|
155 |
* See jobject jD3DContext field
|
|
156 |
*/
|
|
157 |
void SetJavaContext(JNIEnv *env, jobject jd3dc);
|
|
158 |
|
|
159 |
/**
|
|
160 |
* Methods to get/release exclusive access to the direct3d device
|
|
161 |
* interface. Note that some methods of this class assume that the
|
|
162 |
* lock is already taken. They're marked with 'NOLOCK' comment.
|
|
163 |
* Those methods not dealing with the d3d device interface are not
|
|
164 |
* required to obtain the lock (and not marked with NOLOCK)
|
|
165 |
*/
|
|
166 |
void GetExclusiveAccess() { CRITICAL_SECTION_ENTER(deviceLock);}
|
|
167 |
void ReleaseExclusiveAccess() { CRITICAL_SECTION_LEAVE(deviceLock);}
|
|
168 |
|
|
169 |
// methods replicating java-level D3DContext objext
|
|
170 |
void SetColor(jint eargb, jint flags);
|
|
171 |
void SetAlphaComposite(jint rule, jfloat extraAlpha, jint flags);
|
|
172 |
void ResetComposite();
|
|
173 |
|
|
174 |
// Glyph cache-related methods
|
|
175 |
HRESULT /*NOLOCK*/ InitGlyphCache();
|
|
176 |
HRESULT /*NOLOCK*/ GlyphCacheAdd(JNIEnv *env, GlyphInfo *glyph);
|
|
177 |
HRESULT /*NOLOCK*/ UploadImageToTexture(DXSurface *texture, jubyte *pixels,
|
|
178 |
jint dstx, jint dsty,
|
|
179 |
jint srcx, jint srcy,
|
|
180 |
jint srcWidth, jint srcHeight,
|
|
181 |
jint srcStride);
|
|
182 |
DXSurface /*NOLOCK*/ *GetGlyphCacheTexture() { return lpGlyphCacheTexture; }
|
|
183 |
DXSurface /*NOLOCK*/ *GetMaskTexture();
|
|
184 |
GlyphCacheInfo *GetGlyphCache() { return glyphCache; }
|
|
185 |
|
|
186 |
HRESULT CreateSurface(JNIEnv *env,
|
|
187 |
jint width, jint height, jint depth,
|
|
188 |
jint transparency, jint d3dSurfaceType,
|
|
189 |
DXSurface** dxSurface, jint* pType);
|
|
190 |
|
|
191 |
/**
|
|
192 |
* Attaches a depth buffer to the specified dxSurface.
|
|
193 |
* If depthBufferFormat is not initialized (depthBufferFormat.dwSize == 0),
|
|
194 |
* it will be initialized at the time of the call.
|
|
195 |
*
|
|
196 |
* If the buffer for this surface already exists, a "lost" status of the
|
|
197 |
* depth buffer is returned.
|
|
198 |
*/
|
|
199 |
HRESULT AttachDepthBuffer(DXSurface *dxSurface);
|
|
200 |
|
|
201 |
// methods for dealing with device capabilities as determined by
|
|
202 |
// methods in D3DRuntimeTest
|
|
203 |
int GetDeviceCaps() { return deviceCaps; }
|
|
204 |
void SetDeviceCaps(int caps) { deviceCaps = caps; }
|
|
205 |
|
|
206 |
// Returns the texture pixel format table
|
|
207 |
D3DTextureTable &GetTextureTable() { return textureTable; }
|
|
208 |
|
|
209 |
DDrawSurface *GetTargetSurface() { return ddTargetSurface; }
|
|
210 |
IDirect3DDevice7 *Get3DDevice() { return d3dDevice; }
|
|
211 |
|
|
212 |
// IDirect3DDevice7-delegation methods
|
|
213 |
|
|
214 |
/**
|
|
215 |
* This method only sets the texture if it's not already set.
|
|
216 |
*/
|
|
217 |
HRESULT /*NOLOCK*/ SetTexture(DXSurface *dxSurface, DWORD dwStage = 0);
|
|
218 |
HRESULT SetRenderTarget(DDrawSurface *lpSurface);
|
|
219 |
HRESULT SetTransform(jobject xform,
|
|
220 |
jdouble m00, jdouble m10,
|
|
221 |
jdouble m01, jdouble m11,
|
|
222 |
jdouble m02, jdouble m12);
|
|
223 |
HRESULT SetClip(JNIEnv *env, jobject clip,
|
|
224 |
jboolean isRect,
|
|
225 |
int x1, int y1, int x2, int y2);
|
|
226 |
|
|
227 |
DWORD GetMinTextureWidth() { return d3dDevDesc.dwMinTextureWidth; }
|
|
228 |
DWORD GetMinTextureHeight() { return d3dDevDesc.dwMinTextureHeight; }
|
|
229 |
DWORD GetMaxTextureWidth() { return d3dDevDesc.dwMaxTextureWidth; }
|
|
230 |
DWORD GetMaxTextureHeight() { return d3dDevDesc.dwMaxTextureHeight; }
|
|
231 |
DWORD GetMaxTextureAspectRatio()
|
|
232 |
{ return d3dDevDesc.dwMaxTextureAspectRatio; };
|
|
233 |
BOOL IsPow2TexturesOnly()
|
|
234 |
{ return d3dDevDesc.dpcTriCaps.dwTextureCaps & D3DPTEXTURECAPS_POW2; };
|
|
235 |
BOOL IsSquareTexturesOnly()
|
|
236 |
{ return d3dDevDesc.dpcTriCaps.dwTextureCaps &
|
|
237 |
D3DPTEXTURECAPS_SQUAREONLY; }
|
|
238 |
|
|
239 |
/**
|
|
240 |
* This method invalidates the java-level D3DContext object if
|
|
241 |
* the passed DDrawSurface is the current render target.
|
|
242 |
* The invalidation needs to be done so that the D3DContext object
|
|
243 |
* resets itself in case the native d3d device has been recreated, or
|
|
244 |
* the target surface has been lost (in which case this method is called
|
|
245 |
* from D3DSD_RestoreSurface function, see D3DSD_RestoreSurface for
|
|
246 |
* more info).
|
|
247 |
*/
|
|
248 |
void InvalidateIfTarget(JNIEnv *env, DDrawSurface *lpSurface);
|
|
249 |
|
|
250 |
// primitives batching-related methods
|
|
251 |
/**
|
|
252 |
* Calls devices's BeginScene if there weren't one already pending,
|
|
253 |
* sets the pending flag.
|
|
254 |
*/
|
|
255 |
HRESULT /*NOLOCK*/ BeginScene(jbyte newState);
|
|
256 |
/**
|
|
257 |
* Only calls device's EndScene if ddResult is an error.
|
|
258 |
*/
|
|
259 |
HRESULT /*NOLOCK*/ EndScene(HRESULT ddResult);
|
|
260 |
/**
|
|
261 |
* forces the end of batching by calling EndScene if
|
|
262 |
* there was BeginScene pending.
|
|
263 |
*/
|
|
264 |
HRESULT /*NOLOCK*/ ForceEndScene();
|
|
265 |
/**
|
|
266 |
* flushes the queue if the argument is this device's render target
|
|
267 |
*/
|
|
268 |
void FlushD3DQueueForTarget(DDrawSurface *ddSurface);
|
|
269 |
|
|
270 |
// fields replicating D3DContext class' fields
|
|
271 |
jint compState;
|
|
272 |
jfloat extraAlpha;
|
|
273 |
jint colorPixel;
|
|
274 |
|
|
275 |
// pixel for vertices used in blits via texture mapping,
|
|
276 |
// set in SetAlphaComposite()
|
|
277 |
jint blitPolygonPixel;
|
|
278 |
|
|
279 |
/**
|
|
280 |
* Current operation state.
|
|
281 |
* See STATE_* macros above.
|
|
282 |
*/
|
|
283 |
jbyte opState;
|
|
284 |
|
|
285 |
private:
|
|
286 |
D3DContext(DDraw *ddObject, DXObject* dxObject);
|
|
287 |
HRESULT InitD3DDevice(IDirect3DDevice7 *d3dDevice);
|
|
288 |
/**
|
|
289 |
* This method releases an old device, creates a new one,
|
|
290 |
* runs d3d caps tests on it and sets the device caps according
|
|
291 |
* to the results.
|
|
292 |
*/
|
|
293 |
HRESULT /*NOLOCK*/ CreateAndTestD3DDevice(DxCapabilities *dxCaps);
|
|
294 |
HRESULT /*NOLOCK*/ InitMaskTileTexture();
|
|
295 |
void /*NOLOCK*/ UpdateState(jbyte newState);
|
|
296 |
|
|
297 |
IDirect3DDevice7 *d3dDevice;
|
|
298 |
IDirect3D7 *d3dObject;
|
|
299 |
DDraw *ddObject;
|
|
300 |
DXObject *dxObject;
|
|
301 |
const GUID *pDeviceGUID;
|
|
302 |
DDrawSurface *ddTargetSurface;
|
|
303 |
DXSurface *lpMaskTexture;
|
|
304 |
DXSurface *lpGlyphCacheTexture;
|
|
305 |
D3DTextureTable textureTable;
|
|
306 |
DDPIXELFORMAT depthBufferFormat;
|
|
307 |
DDPIXELFORMAT maskTileTexFormat;
|
|
308 |
GlyphCacheInfo *glyphCache;
|
|
309 |
BOOL glyphCacheAvailable;
|
|
310 |
// array of the textures currently set to the device
|
|
311 |
IDirectDrawSurface7 *lastTexture[MAX_USED_TEXTURE_STAGE+1];
|
|
312 |
|
|
313 |
/**
|
|
314 |
* A weak reference to the java-level D3DContext object.
|
|
315 |
* Used to invalidate the java D3DContext object if the device has been
|
|
316 |
* recreated.
|
|
317 |
* See SetJavaContext() method.
|
|
318 |
*/
|
|
319 |
jobject jD3DContext;
|
|
320 |
|
|
321 |
D3DDEVICEDESC7 d3dDevDesc;
|
|
322 |
int deviceCaps;
|
|
323 |
BOOL bIsHWRasterizer;
|
|
324 |
|
|
325 |
/**
|
|
326 |
* Used to implement simple primitive batching.
|
|
327 |
* See BeginScene/EndScene/ForceEndScene.
|
|
328 |
*/
|
|
329 |
BOOL bBeginScenePending;
|
|
330 |
#ifdef DEBUG
|
|
331 |
int endSceneQueueDepth;
|
|
332 |
#endif /* DEBUG */
|
|
333 |
|
|
334 |
CriticalSection deviceLock;
|
|
335 |
};
|
|
336 |
|
|
337 |
// - Various vertex formats -------------------------------------------
|
|
338 |
|
|
339 |
#define D3DFVF_J2DLVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1)
|
|
340 |
typedef struct _J2DLVERTEX {
|
|
341 |
float x, y, z;
|
|
342 |
DWORD color;
|
|
343 |
float tu, tv;
|
|
344 |
} J2DLVERTEX;
|
|
345 |
|
|
346 |
/**
|
|
347 |
* We're still debating whether to use a single vertex format
|
|
348 |
* for all primitives or specific per-primitive formats.
|
|
349 |
* Using different vertex formats reduces the amount of
|
|
350 |
* data being sent to the video board, and this shows
|
|
351 |
* benetits when running Java2D benchmarks.
|
|
352 |
*
|
|
353 |
* However, in a typical Swing application the number
|
|
354 |
* of primitives of the same type rendered in a row is
|
|
355 |
* relatively small, which means that the driver has
|
|
356 |
* to spend more time state switching to account for different
|
|
357 |
* vertex formats (and according to MSDN, switching vertex format
|
|
358 |
* is a very expensive operation). So for this kind of application
|
|
359 |
* it's better to stick with a single vertex format.
|
|
360 |
*/
|
|
361 |
#define USE_SINGLE_VERTEX_FORMAT
|
|
362 |
|
|
363 |
#ifndef USE_SINGLE_VERTEX_FORMAT
|
|
364 |
|
|
365 |
#define D3DFVF_J2D_XY_C (D3DFVF_XYZ | D3DFVF_DIFFUSE)
|
|
366 |
#define D3DFVF_XY_VERTEX D3DFVF_XYZ
|
|
367 |
|
|
368 |
typedef struct _J2D_XY_C_VERTEX {
|
|
369 |
float x, y, z;
|
|
370 |
DWORD color;
|
|
371 |
} J2D_XY_C_VERTEX;
|
|
372 |
typedef struct _J2D_XY_VERTEX {
|
|
373 |
float x, y, z;
|
|
374 |
} J2D_XY_VERTEX;
|
|
375 |
|
|
376 |
#else // USE_SINGLE_VERTEX_FORMAT
|
|
377 |
|
|
378 |
// When using a single vertex format, define
|
|
379 |
// every format as J2DLVERTEX
|
|
380 |
|
|
381 |
#define D3DFVF_J2D_XY_C D3DFVF_J2DLVERTEX
|
|
382 |
#define D3DFVF_XY_VERTEX D3DFVF_J2DLVERTEX
|
|
383 |
typedef J2DLVERTEX J2D_XY_C_VERTEX;
|
|
384 |
typedef J2DLVERTEX J2D_XY_VERTEX;
|
|
385 |
|
|
386 |
#endif // USE_SINGLE_VERTEX_FORMAT
|
|
387 |
|
|
388 |
typedef J2DLVERTEX J2DLV_QUAD[4];
|
|
389 |
typedef J2DLVERTEX J2DLV_HEXA[6];
|
|
390 |
typedef J2D_XY_C_VERTEX J2DXYC_HEXA[6];
|
|
391 |
typedef J2D_XY_VERTEX J2DXY_HEXA[6];
|
|
392 |
#define MAX_CACHED_SPAN_VX_NUM 100
|
|
393 |
|
|
394 |
// - Helper Macros ---------------------------------------------------
|
|
395 |
|
|
396 |
#define D3D_DEPTH_IDX(DEPTH) \
|
|
397 |
(((DEPTH) <= 16) ? DEPTH16_IDX : \
|
|
398 |
(((DEPTH) <= 24) ? DEPTH24_IDX : DEPTH32_IDX))
|
|
399 |
|
|
400 |
#define D3D_TR_IDX(TRAN) ((TRAN) - 1)
|
|
401 |
|
|
402 |
#define D3DSD_MASK_TILE_SIZE 32
|
|
403 |
#define D3D_GCACHE_WIDTH 512
|
|
404 |
#define D3D_GCACHE_HEIGHT 512
|
|
405 |
#define D3D_GCACHE_CELL_WIDTH 16
|
|
406 |
#define D3D_GCACHE_CELL_HEIGHT 16
|
|
407 |
|
|
408 |
#define D3DC_NO_CONTEXT_FLAGS \
|
|
409 |
sun_java2d_d3d_D3DContext_NO_CONTEXT_FLAGS
|
|
410 |
#define D3DC_SRC_IS_OPAQUE \
|
|
411 |
sun_java2d_d3d_D3DContext_SRC_IS_OPAQUE
|
|
412 |
|
|
413 |
#define J2D_D3D_FAILURE \
|
|
414 |
sun_java2d_d3d_D3DContext_J2D_D3D_FAILURE
|
|
415 |
#define J2D_D3D_PLAIN_SURFACE_OK \
|
|
416 |
sun_java2d_d3d_D3DContext_J2D_D3D_PLAIN_SURFACE_OK
|
|
417 |
#define J2D_D3D_OP_TEXTURE_SURFACE_OK \
|
|
418 |
sun_java2d_d3d_D3DContext_J2D_D3D_OP_TEXTURE_SURFACE_OK
|
|
419 |
#define J2D_D3D_BM_TEXTURE_SURFACE_OK \
|
|
420 |
sun_java2d_d3d_D3DContext_J2D_D3D_BM_TEXTURE_SURFACE_OK
|
|
421 |
#define J2D_D3D_TR_TEXTURE_SURFACE_OK \
|
|
422 |
sun_java2d_d3d_D3DContext_J2D_D3D_TR_TEXTURE_SURFACE_OK
|
|
423 |
#define J2D_D3D_DEPTH_SURFACE_OK \
|
|
424 |
sun_java2d_d3d_D3DContext_J2D_D3D_DEPTH_SURFACE_OK
|
|
425 |
#define J2D_D3D_OP_RTT_SURFACE_OK \
|
|
426 |
sun_java2d_d3d_D3DContext_J2D_D3D_OP_RTT_SURFACE_OK
|
|
427 |
#define J2D_D3D_LINES_OK \
|
|
428 |
sun_java2d_d3d_D3DContext_J2D_D3D_LINES_OK
|
|
429 |
#define J2D_D3D_TEXTURE_BLIT_OK \
|
|
430 |
sun_java2d_d3d_D3DContext_J2D_D3D_TEXTURE_BLIT_OK
|
|
431 |
#define J2D_D3D_TEXTURE_TRANSFORM_OK \
|
|
432 |
sun_java2d_d3d_D3DContext_J2D_D3D_TEXTURE_TRANSFORM_OK
|
|
433 |
#define J2D_D3D_LINE_CLIPPING_OK \
|
|
434 |
sun_java2d_d3d_D3DContext_J2D_D3D_LINE_CLIPPING_OK
|
|
435 |
#define J2D_D3D_DEVICE_OK \
|
|
436 |
sun_java2d_d3d_D3DContext_J2D_D3D_DEVICE_OK
|
|
437 |
#define J2D_D3D_PIXEL_FORMATS_OK \
|
|
438 |
sun_java2d_d3d_D3DContext_J2D_D3D_PIXEL_FORMATS_OK
|
|
439 |
#define J2D_D3D_SET_TRANSFORM_OK \
|
|
440 |
sun_java2d_d3d_D3DContext_J2D_D3D_SET_TRANSFORM_OK
|
|
441 |
#define J2D_D3D_HW_OK \
|
|
442 |
sun_java2d_d3d_D3DContext_J2D_D3D_HW_OK
|
|
443 |
#define J2D_D3D_ENABLED_OK \
|
|
444 |
sun_java2d_d3d_D3DContext_J2D_D3D_ENABLED_OK
|
|
445 |
|
|
446 |
#endif D3DCONTEXT_H
|