1086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com/* 2086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com * Copyright 2011 Google Inc. 3086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com * 4086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com * Use of this source code is governed by a BSD-style license that can be 5086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com * found in the LICENSE file. 6086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com */ 7086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com 8cba99b88fd5fb39def7a094dc32c0745c7a1cfeajvanverth#include "GrGLGLSL.h" 9f529439fea003851d986a0573a7e0465754b2a48egdaniel#include "GrGLContext.h" 10f529439fea003851d986a0573a7e0465754b2a48egdaniel#include "GrGLUtil.h" 114af0af612f8cfb6951feb10ffe3091821866bd44bsalomon@google.com#include "SkString.h" 12086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com 13cba99b88fd5fb39def7a094dc32c0745c7a1cfeajvanverthbool GrGLGetGLSLGeneration(const GrGLInterface* gl, GrGLSLGeneration* generation) { 1449f085dddff10473b6ebf832a974288300224e60bsalomon SkASSERT(generation); 15086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com GrGLSLVersion ver = GrGLGetGLSLVersion(gl); 16f4e67e3e5e5017284300a61e7bb046723a44b0cfcommit-bot@chromium.org if (GR_GLSL_INVALID_VER == ver) { 17f4e67e3e5e5017284300a61e7bb046723a44b0cfcommit-bot@chromium.org return false; 18f4e67e3e5e5017284300a61e7bb046723a44b0cfcommit-bot@chromium.org } 199e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org switch (gl->fStandard) { 209e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org case kGL_GrGLStandard: 21f6de475e5cbd143f348ff7738919e397b7fe7f57tfarina@chromium.org SkASSERT(ver >= GR_GLSL_VER(1,10)); 2233ad701bc30387127c427fb1e38c781d5de33491cdalton if (ver >= GR_GLSL_VER(4,00)) { 2333ad701bc30387127c427fb1e38c781d5de33491cdalton *generation = k400_GrGLSLGeneration; 2433ad701bc30387127c427fb1e38c781d5de33491cdalton } else if (ver >= GR_GLSL_VER(3,30)) { 2563a9f842a12c8ce265ca7a8c43117e2e7129ac83rmistry *generation = k330_GrGLSLGeneration; 2663a9f842a12c8ce265ca7a8c43117e2e7129ac83rmistry } else if (ver >= GR_GLSL_VER(1,50)) { 27f4e67e3e5e5017284300a61e7bb046723a44b0cfcommit-bot@chromium.org *generation = k150_GrGLSLGeneration; 28281c726c760c2b0ef957674da0360d5595d52a9cbsalomon@google.com } else if (ver >= GR_GLSL_VER(1,40)) { 29f4e67e3e5e5017284300a61e7bb046723a44b0cfcommit-bot@chromium.org *generation = k140_GrGLSLGeneration; 30086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com } else if (ver >= GR_GLSL_VER(1,30)) { 31f4e67e3e5e5017284300a61e7bb046723a44b0cfcommit-bot@chromium.org *generation = k130_GrGLSLGeneration; 32086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com } else { 33f4e67e3e5e5017284300a61e7bb046723a44b0cfcommit-bot@chromium.org *generation = k110_GrGLSLGeneration; 34086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com } 35f4e67e3e5e5017284300a61e7bb046723a44b0cfcommit-bot@chromium.org return true; 369e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org case kGLES_GrGLStandard: 37f6de475e5cbd143f348ff7738919e397b7fe7f57tfarina@chromium.org SkASSERT(ver >= GR_GL_VER(1,00)); 3833ad701bc30387127c427fb1e38c781d5de33491cdalton if (ver >= GR_GLSL_VER(3,20)) { 3933ad701bc30387127c427fb1e38c781d5de33491cdalton *generation = k320es_GrGLSLGeneration; 4033ad701bc30387127c427fb1e38c781d5de33491cdalton } else if (ver >= GR_GLSL_VER(3,10)) { 4163a9f842a12c8ce265ca7a8c43117e2e7129ac83rmistry *generation = k310es_GrGLSLGeneration; 4233ad701bc30387127c427fb1e38c781d5de33491cdalton } else if (ver >= GR_GLSL_VER(3,00)) { 4363a9f842a12c8ce265ca7a8c43117e2e7129ac83rmistry *generation = k330_GrGLSLGeneration; 4463a9f842a12c8ce265ca7a8c43117e2e7129ac83rmistry } else { 4563a9f842a12c8ce265ca7a8c43117e2e7129ac83rmistry *generation = k110_GrGLSLGeneration; 4663a9f842a12c8ce265ca7a8c43117e2e7129ac83rmistry } 47f4e67e3e5e5017284300a61e7bb046723a44b0cfcommit-bot@chromium.org return true; 48086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com default: 4988cb22b6b4816c7a9ca6c5b795965b4606f9eb7bcommit-bot@chromium.org SkFAIL("Unknown GL Standard"); 50f4e67e3e5e5017284300a61e7bb046723a44b0cfcommit-bot@chromium.org return false; 51086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com } 52086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com} 53086e5354fe7ae60e69c42bdfbc3d03bd8559b44ftomhudson@google.com 54