webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
renderer11_utils.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2012-2014 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 // renderer11_utils.h: Conversion functions and other utility routines
8 // specific to the D3D11 renderer.
9 
10 #ifndef LIBANGLE_RENDERER_D3D_D3D11_RENDERER11_UTILS_H_
11 #define LIBANGLE_RENDERER_D3D_D3D11_RENDERER11_UTILS_H_
12 
13 #include <array>
14 #include <functional>
15 #include <vector>
16 
17 #include "common/Color.h"
18 
19 #include "libANGLE/Caps.h"
20 #include "libANGLE/Error.h"
23 
24 namespace gl
25 {
26 class FramebufferAttachment;
27 }
28 
29 namespace rx
30 {
31 class Renderer11;
32 class RenderTarget11;
33 struct WorkaroundsD3D;
34 struct Renderer11DeviceCaps;
35 
36 using RenderTargetArray = std::array<RenderTarget11 *, gl::IMPLEMENTATION_MAX_DRAW_BUFFERS>;
37 using RTVArray = std::array<ID3D11RenderTargetView *, gl::IMPLEMENTATION_MAX_DRAW_BUFFERS>;
38 
39 namespace gl_d3d11
40 {
41 
42 D3D11_BLEND ConvertBlendFunc(GLenum glBlend, bool isAlpha);
43 D3D11_BLEND_OP ConvertBlendOp(GLenum glBlendOp);
44 UINT8 ConvertColorMask(bool maskRed, bool maskGreen, bool maskBlue, bool maskAlpha);
45 
46 D3D11_CULL_MODE ConvertCullMode(bool cullEnabled, GLenum cullMode);
47 
48 D3D11_COMPARISON_FUNC ConvertComparison(GLenum comparison);
49 D3D11_DEPTH_WRITE_MASK ConvertDepthMask(bool depthWriteEnabled);
50 UINT8 ConvertStencilMask(GLuint stencilmask);
51 D3D11_STENCIL_OP ConvertStencilOp(GLenum stencilOp);
52 
53 D3D11_FILTER ConvertFilter(GLenum minFilter, GLenum magFilter, float maxAnisotropy, GLenum comparisonMode);
54 D3D11_TEXTURE_ADDRESS_MODE ConvertTextureWrap(GLenum wrap);
55 UINT ConvertMaxAnisotropy(float maxAnisotropy, D3D_FEATURE_LEVEL featureLevel);
56 
57 D3D11_QUERY ConvertQueryType(GLenum queryType);
58 
59 } // namespace gl_d3d11
60 
61 namespace d3d11_gl
62 {
63 
64 unsigned int GetReservedVertexUniformVectors(D3D_FEATURE_LEVEL featureLevel);
65 
66 unsigned int GetReservedFragmentUniformVectors(D3D_FEATURE_LEVEL featureLevel);
67 
68 GLint GetMaximumClientVersion(D3D_FEATURE_LEVEL featureLevel);
69 void GenerateCaps(ID3D11Device *device, ID3D11DeviceContext *deviceContext, const Renderer11DeviceCaps &renderer11DeviceCaps, gl::Caps *caps,
70  gl::TextureCapsMap *textureCapsMap, gl::Extensions *extensions, gl::Limitations *limitations);
71 
72 } // namespace d3d11_gl
73 
74 namespace d3d11
75 {
76 
78 {
83 };
84 
85 ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device);
86 
87 void MakeValidSize(bool isImage, DXGI_FORMAT format, GLsizei *requestWidth, GLsizei *requestHeight, int *levelOffset);
88 
90  const Renderer11DeviceCaps &renderer11DeviceCaps,
91  GLuint width,
92  GLuint height,
93  GLuint depth,
94  GLuint mipLevels,
95  std::vector<D3D11_SUBRESOURCE_DATA> *outSubresourceData,
96  std::vector<std::vector<BYTE>> *outData);
97 
99 
101 {
102  float x, y;
103  float u, v;
104 };
105 void SetPositionTexCoordVertex(PositionTexCoordVertex* vertex, float x, float y, float u, float v);
106 
108 {
109  float x, y;
110  unsigned int l;
111  float u, v, s;
112 };
114  unsigned int layer, float u, float v, float s);
115 
116 template <typename T>
118 {
119  float x, y, z;
120  T r, g, b, a;
121 };
122 
123 template <typename T>
124 void SetPositionDepthColorVertex(PositionDepthColorVertex<T>* vertex, float x, float y, float z,
125  const gl::Color<T> &color)
126 {
127  vertex->x = x;
128  vertex->y = y;
129  vertex->z = z;
130  vertex->r = color.red;
131  vertex->g = color.green;
132  vertex->b = color.blue;
133  vertex->a = color.alpha;
134 }
135 
136 HRESULT SetDebugName(ID3D11DeviceChild *resource, const char *name);
137 
138 template <typename outType>
139 outType* DynamicCastComObject(IUnknown* object)
140 {
141  outType *outObject = NULL;
142  HRESULT result = object->QueryInterface(__uuidof(outType), reinterpret_cast<void**>(&outObject));
143  if (SUCCEEDED(result))
144  {
145  return outObject;
146  }
147  else
148  {
149  SafeRelease(outObject);
150  return NULL;
151  }
152 }
153 
155 {
156  switch (errorCode)
157  {
158  case DXGI_ERROR_DEVICE_HUNG:
159  case DXGI_ERROR_DEVICE_REMOVED:
160  case DXGI_ERROR_DEVICE_RESET:
161  case DXGI_ERROR_DRIVER_INTERNAL_ERROR:
162  case DXGI_ERROR_NOT_CURRENTLY_AVAILABLE:
163  return true;
164  default:
165  return false;
166  }
167 }
168 
169 inline ID3D11VertexShader *CompileVS(ID3D11Device *device, const BYTE *byteCode, size_t N, const char *name)
170 {
171  ID3D11VertexShader *vs = nullptr;
172  HRESULT result = device->CreateVertexShader(byteCode, N, nullptr, &vs);
173  ASSERT(SUCCEEDED(result));
174  if (SUCCEEDED(result))
175  {
176  SetDebugName(vs, name);
177  return vs;
178  }
179  return nullptr;
180 }
181 
182 template <unsigned int N>
183 ID3D11VertexShader *CompileVS(ID3D11Device *device, const BYTE (&byteCode)[N], const char *name)
184 {
185  return CompileVS(device, byteCode, N, name);
186 }
187 
188 inline ID3D11GeometryShader *CompileGS(ID3D11Device *device, const BYTE *byteCode, size_t N, const char *name)
189 {
190  ID3D11GeometryShader *gs = nullptr;
191  HRESULT result = device->CreateGeometryShader(byteCode, N, nullptr, &gs);
192  ASSERT(SUCCEEDED(result));
193  if (SUCCEEDED(result))
194  {
195  SetDebugName(gs, name);
196  return gs;
197  }
198  return nullptr;
199 }
200 
201 template <unsigned int N>
202 ID3D11GeometryShader *CompileGS(ID3D11Device *device, const BYTE (&byteCode)[N], const char *name)
203 {
204  return CompileGS(device, byteCode, N, name);
205 }
206 
207 inline ID3D11PixelShader *CompilePS(ID3D11Device *device, const BYTE *byteCode, size_t N, const char *name)
208 {
209  ID3D11PixelShader *ps = nullptr;
210  HRESULT result = device->CreatePixelShader(byteCode, N, nullptr, &ps);
211  ASSERT(SUCCEEDED(result));
212  if (SUCCEEDED(result))
213  {
214  SetDebugName(ps, name);
215  return ps;
216  }
217  return nullptr;
218 }
219 
220 template <unsigned int N>
221 ID3D11PixelShader *CompilePS(ID3D11Device *device, const BYTE (&byteCode)[N], const char *name)
222 {
223  return CompilePS(device, byteCode, N, name);
224 }
225 
226 template <typename ResourceType>
228 {
229  public:
230  LazyResource() : mResource(nullptr), mAssociatedDevice(nullptr) {}
231  virtual ~LazyResource() { release(); }
232 
233  virtual ResourceType *resolve(ID3D11Device *device) = 0;
234  void release() { SafeRelease(mResource); }
235 
236  protected:
237  void checkAssociatedDevice(ID3D11Device *device);
238 
240  ID3D11Device *mAssociatedDevice;
241 };
242 
243 template <typename ResourceType>
245 {
246  ASSERT(mAssociatedDevice == nullptr || device == mAssociatedDevice);
247  mAssociatedDevice = device;
248 }
249 
250 template <typename D3D11ShaderType>
251 class LazyShader final : public LazyResource<D3D11ShaderType>
252 {
253  public:
254  // All parameters must be constexpr. Not supported in VS2013.
255  LazyShader(const BYTE *byteCode,
256  size_t byteCodeSize,
257  const char *name)
258  : mByteCode(byteCode),
259  mByteCodeSize(byteCodeSize),
260  mName(name)
261  {
262  }
263 
264  D3D11ShaderType *resolve(ID3D11Device *device) override;
265 
266  private:
267  const BYTE *mByteCode;
268  size_t mByteCodeSize;
269  const char *mName;
270 };
271 
272 template <>
273 inline ID3D11VertexShader *LazyShader<ID3D11VertexShader>::resolve(ID3D11Device *device)
274 {
275  checkAssociatedDevice(device);
276  if (mResource == nullptr)
277  {
278  mResource = CompileVS(device, mByteCode, mByteCodeSize, mName);
279  }
280  return mResource;
281 }
282 
283 template <>
284 inline ID3D11GeometryShader *LazyShader<ID3D11GeometryShader>::resolve(ID3D11Device *device)
285 {
286  checkAssociatedDevice(device);
287  if (mResource == nullptr)
288  {
289  mResource = CompileGS(device, mByteCode, mByteCodeSize, mName);
290  }
291  return mResource;
292 }
293 
294 template <>
295 inline ID3D11PixelShader *LazyShader<ID3D11PixelShader>::resolve(ID3D11Device *device)
296 {
297  checkAssociatedDevice(device);
298  if (mResource == nullptr)
299  {
300  mResource = CompilePS(device, mByteCode, mByteCodeSize, mName);
301  }
302  return mResource;
303 }
304 
305 class LazyInputLayout final : public LazyResource<ID3D11InputLayout>
306 {
307  public:
308  LazyInputLayout(const D3D11_INPUT_ELEMENT_DESC *inputDesc,
309  size_t inputDescLen,
310  const BYTE *byteCode,
311  size_t byteCodeLen,
312  const char *debugName);
313 
314  ID3D11InputLayout *resolve(ID3D11Device *device) override;
315 
316  private:
317  std::vector<D3D11_INPUT_ELEMENT_DESC> mInputDesc;
318  size_t mByteCodeLen;
319  const BYTE *mByteCode;
320  const char *mDebugName;
321 };
322 
323 class LazyBlendState final : public LazyResource<ID3D11BlendState>
324 {
325  public:
326  LazyBlendState(const D3D11_BLEND_DESC &desc, const char *debugName);
327 
328  ID3D11BlendState *resolve(ID3D11Device *device) override;
329 
330  private:
331  D3D11_BLEND_DESC mDesc;
332  const char *mDebugName;
333 };
334 
335 // Copy data to small D3D11 buffers, such as for small constant buffers, which use one struct to
336 // represent an entire buffer.
337 template <class T>
338 void SetBufferData(ID3D11DeviceContext *context, ID3D11Buffer *constantBuffer, const T &value)
339 {
340  D3D11_MAPPED_SUBRESOURCE mappedResource = {};
341  HRESULT result = context->Map(constantBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
342  ASSERT(SUCCEEDED(result));
343  if (SUCCEEDED(result))
344  {
345  memcpy(mappedResource.pData, &value, sizeof(T));
346  context->Unmap(constantBuffer, 0);
347  }
348 }
349 
351  const DXGI_ADAPTER_DESC &adapterDesc);
352 
354 {
357 
359 };
360 
361 void InitConstantBufferDesc(D3D11_BUFFER_DESC *constantBufferDescription, size_t byteWidth);
362 } // namespace d3d11
363 
364 // A helper class which wraps a 2D or 3D texture.
366 {
367  public:
368  TextureHelper11();
370  ~TextureHelper11();
372 
373  static TextureHelper11 MakeAndReference(ID3D11Resource *genericResource,
374  const d3d11::Format &formatSet);
375  static TextureHelper11 MakeAndPossess2D(ID3D11Texture2D *texToOwn,
376  const d3d11::Format &formatSet);
377  static TextureHelper11 MakeAndPossess3D(ID3D11Texture3D *texToOwn,
378  const d3d11::Format &formatSet);
379 
380  GLenum getTextureType() const { return mTextureType; }
381  gl::Extents getExtents() const { return mExtents; }
382  DXGI_FORMAT getFormat() const { return mFormat; }
383  const d3d11::Format &getFormatSet() const { return *mFormatSet; }
384  int getSampleCount() const { return mSampleCount; }
385  ID3D11Texture2D *getTexture2D() const { return mTexture2D; }
386  ID3D11Texture3D *getTexture3D() const { return mTexture3D; }
387  ID3D11Resource *getResource() const;
388  bool valid() const;
389 
390  private:
391  void reset();
392  void initDesc();
393 
394  GLenum mTextureType;
395  gl::Extents mExtents;
396  DXGI_FORMAT mFormat;
397  const d3d11::Format *mFormatSet;
398  int mSampleCount;
399  ID3D11Texture2D *mTexture2D;
400  ID3D11Texture3D *mTexture3D;
401 };
402 
403 enum class StagingAccess
404 {
405  READ,
406  READ_WRITE,
407 };
408 
410  const d3d11::Format &formatSet,
411  const gl::Extents &size,
412  StagingAccess readAndWriteAccess,
413  ID3D11Device *device);
414 
415 bool UsePresentPathFast(const Renderer11 *renderer, const gl::FramebufferAttachment *colorbuffer);
416 
417 } // namespace rx
418 
419 #endif // LIBANGLE_RENDERER_D3D_D3D11_RENDERER11_UTILS_H_
int GLint
Definition: gl2.h:76
void GenerateCaps(ID3D11Device *device, ID3D11DeviceContext *deviceContext, const Renderer11DeviceCaps &renderer11DeviceCaps, gl::Caps *caps, gl::TextureCapsMap *textureCapsMap, gl::Extensions *extensions, gl::Limitations *limitations)
Definition: renderer11_utils.cpp:1046
ID3D11GeometryShader * CompileGS(ID3D11Device *device, const BYTE(&byteCode)[N], const char *name)
Definition: renderer11_utils.h:202
Definition: renderer11_utils.h:227
EGLStreamKHR EGLint EGLint EGLint size
Definition: eglext.h:984
EGLSurface EGLint EGLint EGLint EGLint height
Definition: eglext.h:950
StagingAccess
Definition: renderer11_utils.h:403
GLboolean GLboolean g
Definition: gl2ext.h:306
float z
Definition: renderer11_utils.h:119
GLint GLint GLint GLsizei GLsizei GLenum format
Definition: gl2.h:403
UINT8 ConvertStencilMask(GLuint stencilmask)
Definition: renderer11_utils.cpp:1435
D3D11_COMPARISON_FUNC ConvertComparison(GLenum comparison)
Definition: renderer11_utils.cpp:1394
D3D11_FILTER ConvertFilter(GLenum minFilter, GLenum magFilter, float maxAnisotropy, GLenum comparisonMode)
Definition: renderer11_utils.cpp:1477
GLuint GLint internalFormat
Definition: gl2ext.h:1280
Definition: renderer11_utils.h:82
OPENSSL_EXPORT pem_password_cb void * u
Definition: pem.h:398
D3D11_BLEND_OP ConvertBlendOp(GLenum glBlendOp)
Definition: renderer11_utils.cpp:1315
float y
Definition: renderer11_utils.h:109
gl::Extents getExtents() const
Definition: renderer11_utils.h:381
EGLSurface EGLint EGLint EGLint width
Definition: eglext.h:950
T r
Definition: renderer11_utils.h:120
EGLOutputLayerEXT layer
Definition: eglext.h:695
HRESULT SetDebugName(ID3D11DeviceChild *resource, const char *name)
Definition: renderer11_utils.cpp:1732
EGLStreamKHR void * texture
Definition: eglext.h:568
D3D11_CULL_MODE ConvertCullMode(bool cullEnabled, GLenum cullMode)
Definition: renderer11_utils.cpp:1365
LazyResource()
Definition: renderer11_utils.h:230
std::array< ID3D11RenderTargetView *, gl::IMPLEMENTATION_MAX_DRAW_BUFFERS > RTVArray
Definition: renderer11_utils.h:37
unsigned int GLenum
Definition: gl2.h:69
ReservedConstantBufferSlot
Definition: renderer11_utils.h:353
UINT ConvertMaxAnisotropy(float maxAnisotropy, D3D_FEATURE_LEVEL featureLevel)
Definition: renderer11_utils.cpp:1557
bool isDeviceLostError(HRESULT errorCode)
Definition: renderer11_utils.h:154
Definition: Renderer11.h:102
T blue
Definition: Color.h:20
Definition: angletypes.h:82
std::array< RenderTarget11 *, gl::IMPLEMENTATION_MAX_DRAW_BUFFERS > RenderTargetArray
Definition: renderer11_utils.h:36
HRESULT
Definition: RenderThemeWin.cpp:150
GLenum getTextureType() const
Definition: renderer11_utils.h:380
Definition: renderer11_utils.h:323
D3D11_TEXTURE_ADDRESS_MODE ConvertTextureWrap(GLenum wrap)
Definition: renderer11_utils.cpp:1540
GLint GetMaximumClientVersion(D3D_FEATURE_LEVEL featureLevel)
Definition: renderer11_utils.cpp:1025
void SetPositionLayerTexCoord3DVertex(PositionLayerTexCoord3DVertex *vertex, float x, float y, unsigned int layer, float u, float v, float s)
Definition: renderer11_utils.cpp:1721
Definition: WorkaroundsD3D.h:27
GLuint GetPrimitiveRestartIndex(GLenum indexType)
Definition: utilities.cpp:504
D3D11_STENCIL_OP ConvertStencilOp(GLenum stencilOp)
Definition: renderer11_utils.cpp:1440
#define desc
Definition: extension_set.h:320
void GenerateInitialTextureData(GLint internalFormat, const Renderer11DeviceCaps &renderer11DeviceCaps, GLuint width, GLuint height, GLuint depth, GLuint mipLevels, std::vector< D3D11_SUBRESOURCE_DATA > *outSubresourceData, std::vector< std::vector< BYTE >> *outData)
Definition: renderer11_utils.cpp:1672
ID3D11Texture2D * getTexture2D() const
Definition: renderer11_utils.h:385
ID3D11PixelShader * CompilePS(ID3D11Device *device, const BYTE(&byteCode)[N], const char *name)
Definition: renderer11_utils.h:221
DXGI_FORMAT getFormat() const
Definition: renderer11_utils.h:382
Definition: renderer11_utils.h:117
void release()
Definition: renderer11_utils.h:234
LazyShader(const BYTE *byteCode, size_t byteCodeSize, const char *name)
Definition: renderer11_utils.h:255
Definition: mathutil.h:804
T green
Definition: Color.h:19
Definition: Renderer11.h:46
TestSubObjConstructor T
Definition: TestTypedefs.idl:84
ID3D11Texture3D * getTexture3D() const
Definition: renderer11_utils.h:386
EGLSurface EGLint x
Definition: eglext.h:950
float x
Definition: renderer11_utils.h:119
GLuint color
Definition: gl2ext.h:1371
EGLAttrib * value
Definition: eglext.h:120
Definition: EncryptedMediaExtensions.idl:86
Definition: Caps.h:341
virtual ~LazyResource()
Definition: renderer11_utils.h:231
float y
Definition: renderer11_utils.h:102
Definition: Caps.h:48
unsigned int GLuint
Definition: gl2.h:70
ANGLED3D11DeviceType GetDeviceType(ID3D11Device *device)
Definition: renderer11_utils.cpp:1587
Definition: renderer11_utils.h:305
ANGLED3D11DeviceType
Definition: renderer11_utils.h:77
EGLImageKHR EGLint * name
Definition: eglext.h:851
Definition: renderer11_utils.h:365
Definition: ApplePayLineItem.idl:30
float v
Definition: renderer11_utils.h:111
EGLSurface EGLint EGLint y
Definition: eglext.h:950
Definition: renderer11_utils.h:358
Definition: base64_test.cc:34
outType * DynamicCastComObject(IUnknown *object)
Definition: com_utils.h:13
GLboolean GLboolean GLboolean GLboolean a
Definition: gl2ext.h:306
GLint GLenum GLsizei GLsizei GLsizei depth
Definition: gl2ext.h:572
T b
Definition: renderer11_utils.h:120
#define N
Definition: gcc-loops.cpp:14
Definition: FramebufferAttachment.h:52
Definition: Color.h:16
ResourceType
Definition: InspectorProtocolObjects.h:6897
const d3d11::Format & getFormatSet() const
Definition: renderer11_utils.h:383
ResourceType * mResource
Definition: renderer11_utils.h:239
const GLfloat * v
Definition: gl2.h:514
bool UsePresentPathFast(const Renderer11 *renderer, const gl::FramebufferAttachment *framebufferAttachment)
Definition: renderer11_utils.cpp:2069
float v
Definition: renderer11_utils.h:103
typename lazy::wrap< A, B >::type wrap
Definition: Brigand.h:87
Definition: renderer11_utils.h:100
result
Definition: target-blank-opener-post-window.php:5
D3D11_QUERY ConvertQueryType(GLenum queryType)
Definition: renderer11_utils.cpp:1562
Definition: Caps.h:379
int getSampleCount() const
Definition: renderer11_utils.h:384
T red
Definition: Color.h:18
gl::ErrorOrResult< TextureHelper11 > CreateStagingTexture(GLenum textureType, const d3d11::Format &formatSet, const gl::Extents &size, StagingAccess readAndWriteAccess, ID3D11Device *device)
Definition: renderer11_utils.cpp:2009
struct A s
Definition: renderer11_utils.h:80
WorkaroundsD3D GenerateWorkarounds(const Renderer11DeviceCaps &deviceCaps, const DXGI_ADAPTER_DESC &adapterDesc)
Definition: renderer11_utils.cpp:1820
D3D11_BLEND ConvertBlendFunc(GLenum glBlend, bool isAlpha)
Definition: renderer11_utils.cpp:1257
GLfloat GLfloat GLfloat z
Definition: gl2.h:517
void SetPositionTexCoordVertex(PositionTexCoordVertex *vertex, float x, float y, float u, float v)
Definition: renderer11_utils.cpp:1713
#define NULL
Definition: common_types.h:41
Definition: angleutils.h:26
T a
Definition: renderer11_utils.h:120
unsigned int GetReservedVertexUniformVectors(D3D_FEATURE_LEVEL featureLevel)
Definition: renderer11_utils.cpp:983
void SetPositionDepthColorVertex(PositionDepthColorVertex< T > *vertex, float x, float y, float z, const gl::Color< T > &color)
Definition: renderer11_utils.h:124
GLboolean GLboolean GLboolean b
Definition: gl2ext.h:306
int GLsizei
Definition: gl2.h:78
Definition: Error.h:52
unsigned int l
Definition: renderer11_utils.h:110
void MakeValidSize(bool isImage, DXGI_FORMAT format, GLsizei *requestWidth, GLsizei *requestHeight, int *levelOffset)
Definition: renderer11_utils.cpp:1653
void SafeRelease(T(&resourceBlock)[N])
Definition: angleutils.h:46
unsigned int GetReservedFragmentUniformVectors(D3D_FEATURE_LEVEL featureLevel)
Definition: renderer11_utils.cpp:1004
D3D11_DEPTH_WRITE_MASK ConvertDepthMask(bool depthWriteEnabled)
Definition: renderer11_utils.cpp:1430
Definition: texture_format_table.h:33
void InitConstantBufferDesc(D3D11_BUFFER_DESC *constantBufferDescription, size_t byteWidth)
Definition: renderer11_utils.cpp:1865
ID3D11Device * mAssociatedDevice
Definition: renderer11_utils.h:240
Definition: renderer11_utils.h:79
#define ASSERT(assertion)
Definition: Assertions.h:283
T alpha
Definition: Color.h:21
#define errorCode
Definition: xmlparse.c:612
ID3D11VertexShader * CompileVS(ID3D11Device *device, const BYTE(&byteCode)[N], const char *name)
Definition: renderer11_utils.h:183
Definition: renderer11_utils.h:356
void SetBufferData(ID3D11DeviceContext *context, ID3D11Buffer *constantBuffer, const T &value)
Definition: renderer11_utils.h:338
float y
Definition: renderer11_utils.h:119
Definition: Caps.h:69
Definition: entry_points_gles_2_0.h:15
UINT8 ConvertColorMask(bool red, bool green, bool blue, bool alpha)
Definition: renderer11_utils.cpp:1343
U_CDECL_BEGIN typedef void * context
Definition: ustring.h:1023
Definition: renderer11_utils.h:251
Definition: renderer11_utils.h:107
const AtomicString & reset()
Definition: InputTypeNames.cpp:124
T g
Definition: renderer11_utils.h:120