Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: src/gpu/gl/GrGLCaps.h

Issue 1563443002: Move config texturability/renderability to config table (Closed) Base URL: https://skia.googlesource.com/skia.git@readpixformat
Patch Set: whitespace cleanup Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/GrTest.cpp ('k') | src/gpu/gl/GrGLCaps.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 8
9 #ifndef GrGLCaps_DEFINED 9 #ifndef GrGLCaps_DEFINED
10 #define GrGLCaps_DEFINED 10 #define GrGLCaps_DEFINED
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 kLast_TransferBufferType = kChromium_TransferBufferType, 116 kLast_TransferBufferType = kChromium_TransferBufferType,
117 }; 117 };
118 118
119 /** 119 /**
120 * Initializes the GrGLCaps to the set of features supported in the current 120 * Initializes the GrGLCaps to the set of features supported in the current
121 * OpenGL context accessible via ctxInfo. 121 * OpenGL context accessible via ctxInfo.
122 */ 122 */
123 GrGLCaps(const GrContextOptions& contextOptions, const GrGLContextInfo& ctxI nfo, 123 GrGLCaps(const GrContextOptions& contextOptions, const GrGLContextInfo& ctxI nfo,
124 const GrGLInterface* glInterface); 124 const GrGLInterface* glInterface);
125 125
126 bool isConfigTexturable(GrPixelConfig config) const override {
127 SkASSERT(kGrPixelConfigCnt > config);
128 return SkToBool(fConfigTable[config].fFlags & ConfigInfo::kTextureable_F lag);
129 }
130
131 bool isConfigRenderable(GrPixelConfig config, bool withMSAA) const override {
132 SkASSERT(kGrPixelConfigCnt > config);
133 if (withMSAA) {
134 return SkToBool(fConfigTable[config].fFlags & ConfigInfo::kRenderabl eWithMSAA_Flag);
135 } else {
136 return SkToBool(fConfigTable[config].fFlags & ConfigInfo::kRenderabl e_Flag);
137 }
138 }
139
126 /** Returns conversions to various GL format parameters for a GrPixelCfonig. */ 140 /** Returns conversions to various GL format parameters for a GrPixelCfonig. */
127 const ConfigFormats& configGLFormats(GrPixelConfig config) const { 141 const ConfigFormats& configGLFormats(GrPixelConfig config) const {
128 return fConfigTable[config].fFormats; 142 return fConfigTable[config].fFormats;
129 } 143 }
130 144
131
132 /** 145 /**
133 * Gets an array of legal stencil formats. These formats are not guaranteed 146 * Gets an array of legal stencil formats. These formats are not guaranteed
134 * to be supported by the driver but are legal GLenum names given the GL 147 * to be supported by the driver but are legal GLenum names given the GL
135 * version and extensions supported. 148 * version and extensions supported.
136 */ 149 */
137 const SkTArray<StencilFormat, true>& stencilFormats() const { 150 const SkTArray<StencilFormat, true>& stencilFormats() const {
138 return fStencilFormats; 151 return fStencilFormats;
139 } 152 }
140 153
141 /** 154 /**
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 233
221 /// The maximum number of fragment uniform vectors (GLES has min. 16). 234 /// The maximum number of fragment uniform vectors (GLES has min. 16).
222 int maxFragmentUniformVectors() const { return fMaxFragmentUniformVectors; } 235 int maxFragmentUniformVectors() const { return fMaxFragmentUniformVectors; }
223 236
224 /// maximum number of attribute values per vertex 237 /// maximum number of attribute values per vertex
225 int maxVertexAttributes() const { return fMaxVertexAttributes; } 238 int maxVertexAttributes() const { return fMaxVertexAttributes; }
226 239
227 /// maximum number of texture units accessible in the fragment shader. 240 /// maximum number of texture units accessible in the fragment shader.
228 int maxFragmentTextureUnits() const { return fMaxFragmentTextureUnits; } 241 int maxFragmentTextureUnits() const { return fMaxFragmentTextureUnits; }
229 242
230 /// ES requires an extension to support RGBA8 in RenderBufferStorage
231 bool rgba8RenderbufferSupport() const { return fRGBA8RenderbufferSupport; }
232
233 /** 243 /**
234 * Depending on the ES extensions present the BGRA external format may 244 * Depending on the ES extensions present the BGRA external format may
235 * correspond either a BGRA or RGBA internalFormat. On desktop GL it is 245 * correspond to either a BGRA or RGBA internalFormat. On desktop GL it is
236 * RGBA. 246 * RGBA.
237 */ 247 */
238 bool bgraIsInternalFormat() const { return fBGRAIsInternalFormat; } 248 bool bgraIsInternalFormat() const;
239 249
240 /// Is there support for GL_UNPACK_ROW_LENGTH 250 /// Is there support for GL_UNPACK_ROW_LENGTH
241 bool unpackRowLengthSupport() const { return fUnpackRowLengthSupport; } 251 bool unpackRowLengthSupport() const { return fUnpackRowLengthSupport; }
242 252
243 /// Is there support for GL_UNPACK_FLIP_Y 253 /// Is there support for GL_UNPACK_FLIP_Y
244 bool unpackFlipYSupport() const { return fUnpackFlipYSupport; } 254 bool unpackFlipYSupport() const { return fUnpackFlipYSupport; }
245 255
246 /// Is there support for GL_PACK_ROW_LENGTH 256 /// Is there support for GL_PACK_ROW_LENGTH
247 bool packRowLengthSupport() const { return fPackRowLengthSupport; } 257 bool packRowLengthSupport() const { return fPackRowLengthSupport; }
248 258
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 * If false this does not mean sRGB is not supported but rather that if it i s supported 312 * If false this does not mean sRGB is not supported but rather that if it i s supported
303 * it cannot be turned off for configs that support it. 313 * it cannot be turned off for configs that support it.
304 */ 314 */
305 bool srgbWriteControl() const { return fSRGBWriteControl; } 315 bool srgbWriteControl() const { return fSRGBWriteControl; }
306 316
307 /** 317 /**
308 * Returns a string containing the caps info. 318 * Returns a string containing the caps info.
309 */ 319 */
310 SkString dump() const override; 320 SkString dump() const override;
311 321
312 /**
313 * LATC can appear under one of three possible names. In order to know
314 * which GL internal format to use, we need to keep track of which name
315 * we found LATC under. The default is LATC.
316 */
317 enum LATCAlias {
318 kLATC_LATCAlias,
319 kRGTC_LATCAlias,
320 k3DC_LATCAlias
321 };
322
323 LATCAlias latcAlias() const { return fLATCAlias; }
324
325 bool rgba8888PixelsOpsAreSlow() const { return fRGBA8888PixelsOpsAreSlow; } 322 bool rgba8888PixelsOpsAreSlow() const { return fRGBA8888PixelsOpsAreSlow; }
326 bool partialFBOReadIsSlow() const { return fPartialFBOReadIsSlow; } 323 bool partialFBOReadIsSlow() const { return fPartialFBOReadIsSlow; }
327 324
328 const GrGLSLCaps* glslCaps() const { return reinterpret_cast<GrGLSLCaps*>(fS haderCaps.get()); } 325 const GrGLSLCaps* glslCaps() const { return reinterpret_cast<GrGLSLCaps*>(fS haderCaps.get()); }
329 326
330 private: 327 private:
331 void init(const GrContextOptions&, const GrGLContextInfo&, const GrGLInterfa ce*); 328 void init(const GrContextOptions&, const GrGLContextInfo&, const GrGLInterfa ce*);
332 void initGLSL(const GrGLContextInfo&); 329 void initGLSL(const GrGLContextInfo&);
333 bool hasPathRenderingSupport(const GrGLContextInfo&, const GrGLInterface*); 330 bool hasPathRenderingSupport(const GrGLContextInfo&, const GrGLInterface*);
334 331
335 void onApplyOptionsOverrides(const GrContextOptions& options) override; 332 void onApplyOptionsOverrides(const GrContextOptions& options) override;
336 333
337 void initFSAASupport(const GrGLContextInfo&, const GrGLInterface*); 334 void initFSAASupport(const GrGLContextInfo&, const GrGLInterface*);
338 void initBlendEqationSupport(const GrGLContextInfo&); 335 void initBlendEqationSupport(const GrGLContextInfo&);
339 void initStencilFormats(const GrGLContextInfo&); 336 void initStencilFormats(const GrGLContextInfo&);
340 // This must be called after initFSAASupport(). 337 // This must be called after initFSAASupport().
341 void initConfigRenderableTable(const GrGLContextInfo&, bool srgbSupport); 338 void initConfigTable(const GrGLContextInfo&, const GrGLInterface* gli);
342 void initConfigTexturableTable(const GrGLContextInfo&, const GrGLInterface*, bool srgbSupport);
343 339
344 void initShaderPrecisionTable(const GrGLContextInfo& ctxInfo, 340 void initShaderPrecisionTable(const GrGLContextInfo& ctxInfo,
345 const GrGLInterface* intf, 341 const GrGLInterface* intf,
346 GrGLSLCaps* glslCaps); 342 GrGLSLCaps* glslCaps);
347 343
348 void initConfigSwizzleTable(const GrGLContextInfo& ctxInfo, GrGLSLCaps* glsl Caps); 344 void initConfigSwizzleTable(const GrGLContextInfo& ctxInfo, GrGLSLCaps* glsl Caps);
349 345
350 void initConfigTable(const GrGLContextInfo&);
351 346
352 SkTArray<StencilFormat, true> fStencilFormats; 347 SkTArray<StencilFormat, true> fStencilFormats;
353 348
354 int fMaxFragmentUniformVectors; 349 int fMaxFragmentUniformVectors;
355 int fMaxVertexAttributes; 350 int fMaxVertexAttributes;
356 int fMaxFragmentTextureUnits; 351 int fMaxFragmentTextureUnits;
357 352
358 MSFBOType fMSFBOType; 353 MSFBOType fMSFBOType;
359 InvalidateFBType fInvalidateFBType; 354 InvalidateFBType fInvalidateFBType;
360 MapBufferType fMapBufferType; 355 MapBufferType fMapBufferType;
361 TransferBufferType fTransferBufferType; 356 TransferBufferType fTransferBufferType;
362 LATCAlias fLATCAlias;
363 357
364 bool fRGBA8RenderbufferSupport : 1;
365 bool fBGRAIsInternalFormat : 1;
366 bool fUnpackRowLengthSupport : 1; 358 bool fUnpackRowLengthSupport : 1;
367 bool fUnpackFlipYSupport : 1; 359 bool fUnpackFlipYSupport : 1;
368 bool fPackRowLengthSupport : 1; 360 bool fPackRowLengthSupport : 1;
369 bool fPackFlipYSupport : 1; 361 bool fPackFlipYSupport : 1;
370 bool fTextureUsageSupport : 1; 362 bool fTextureUsageSupport : 1;
371 bool fTexStorageSupport : 1; 363 bool fTexStorageSupport : 1;
372 bool fTextureRedSupport : 1; 364 bool fTextureRedSupport : 1;
373 bool fImagingSupport : 1; 365 bool fImagingSupport : 1;
374 bool fVertexArrayObjectSupport : 1; 366 bool fVertexArrayObjectSupport : 1;
375 bool fDirectStateAccessSupport : 1; 367 bool fDirectStateAccessSupport : 1;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 // This indicates that a stencil format has not yet been determined for the config. 405 // This indicates that a stencil format has not yet been determined for the config.
414 kUnknown_StencilIndex = -1, 406 kUnknown_StencilIndex = -1,
415 // This indicates that there is no supported stencil format for the config. 407 // This indicates that there is no supported stencil format for the config.
416 kUnsupported_StencilFormatIndex = -2 408 kUnsupported_StencilFormatIndex = -2
417 }; 409 };
418 410
419 // Index fStencilFormats. 411 // Index fStencilFormats.
420 int fStencilFormatIndex; 412 int fStencilFormatIndex;
421 413
422 enum { 414 enum {
423 kVerifiedColorAttachment_Flag = 0x1 415 kVerifiedColorAttachment_Flag = 0x1,
416 kTextureable_Flag = 0x2,
417 kRenderable_Flag = 0x4,
418 kRenderableWithMSAA_Flag = 0x8,
424 }; 419 };
425 uint32_t fFlags; 420 uint32_t fFlags;
426 }; 421 };
427 422
428 ConfigInfo fConfigTable[kGrPixelConfigCnt]; 423 ConfigInfo fConfigTable[kGrPixelConfigCnt];
429 424
430 typedef GrCaps INHERITED; 425 typedef GrCaps INHERITED;
431 }; 426 };
432 427
433 #endif 428 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrTest.cpp ('k') | src/gpu/gl/GrGLCaps.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698