1ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madill// 2ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madill// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. 3ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madill// Use of this source code is governed by a BSD-style license that can be 4ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madill// found in the LICENSE file. 5ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madill// 6ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madill 7ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madill#include "SimpleBenchmark.h" 833ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill#include "BufferSubData.h" 9bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill#include "TexSubImage.h" 1033ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill 1133ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie MadillEGLint platforms[] = 1233ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill{ 1333ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE, 1433ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE 1533ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill}; 1633ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill 1733ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie MadillGLenum vertexTypes[] = { GL_FLOAT }; 1882cceb2de7958c7706768f21052a2e3409511fb8Jamie MadillGLint componentCounts[] = { 4 }; 1933ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie MadillGLboolean vertexNorms[] = { GL_FALSE }; 2082cceb2de7958c7706768f21052a2e3409511fb8Jamie MadillGLsizeiptr updateSizes[] = { 0, 300 }; 2133ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie MadillGLsizeiptr bufferSizes[] = { 1024 * 1024 }; 2233ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madillunsigned int iterationCounts[] = { 10 }; 2382cceb2de7958c7706768f21052a2e3409511fb8Jamie Madillunsigned int updatesEveryNFrames[] = { 1, 4 }; 24ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madill 25ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madillint main(int argc, char **argv) 26ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madill{ 27bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill std::vector<BufferSubDataParams> subDataParams; 2833ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill 2933ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill for (size_t platIt = 0; platIt < ArraySize(platforms); platIt++) 3033ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill { 3133ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill for (size_t typeIt = 0; typeIt < ArraySize(vertexTypes); typeIt++) 3233ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill { 3333ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill for (size_t compIt = 0; compIt < ArraySize(componentCounts); compIt++) 3433ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill { 3533ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill for (size_t normIt = 0; normIt < ArraySize(vertexNorms); normIt++) 3633ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill { 3733ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill // No normalized float data 3833ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill if (vertexTypes[typeIt] == GL_FLOAT && vertexNorms[normIt] == GL_TRUE) 3933ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill { 4033ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill continue; 4133ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill } 4233ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill 4333ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill for (size_t updateIt = 0; updateIt < ArraySize(updateSizes); updateIt++) 4433ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill { 4533ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill for (size_t bufszIt = 0; bufszIt < ArraySize(bufferSizes); bufszIt++) 4633ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill { 4733ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill for (size_t itIt = 0; itIt < ArraySize(iterationCounts); itIt++) 4833ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill { 4982cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill for (size_t nfrIt = 0; nfrIt < ArraySize(updatesEveryNFrames); nfrIt++) 5082cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill { 5182cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill BufferSubDataParams params; 5282cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill params.requestedRenderer = platforms[platIt]; 5382cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill params.vertexType = vertexTypes[typeIt]; 5482cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill params.vertexComponentCount = componentCounts[compIt]; 5582cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill params.vertexNormalized = vertexNorms[normIt]; 5682cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill params.updateSize = updateSizes[updateIt]; 5782cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill params.bufferSize = bufferSizes[bufszIt]; 5882cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill params.iterations = iterationCounts[itIt]; 5982cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill params.updatesEveryNFrames = updatesEveryNFrames[nfrIt]; 6033ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill 6182cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill if (updateSizes[updateIt] == 0) 6282cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill { 6382cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill if (nfrIt > 0) 6482cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill { 6582cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill continue; 6682cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill } 6782cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill else 6882cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill { 6982cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill params.updatesEveryNFrames = 1; 7082cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill } 7182cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill } 7282cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill 73bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill subDataParams.push_back(params); 7482cceb2de7958c7706768f21052a2e3409511fb8Jamie Madill } 7533ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill } 7633ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill } 7733ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill } 7833ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill } 7933ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill } 8033ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill } 8133ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill } 8233ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill 8333ea2f977647e5e3a71cd0d6af6c9eef82afe9e3Jamie Madill // Enumerates permutations 84bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill RunBenchmarks<BufferSubDataBenchmark>(subDataParams); 85bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill 86bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill std::vector<TexSubImageParams> subImageParams; 87bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill 88bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill for (size_t platIt = 0; platIt < ArraySize(platforms); platIt++) 89bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill { 90bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill TexSubImageParams params; 91bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill 92bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill params.requestedRenderer = platforms[platIt]; 93bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill params.imageWidth = 1024; 94bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill params.imageHeight = 1024; 95bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill params.subImageHeight = 64; 96bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill params.subImageWidth = 64; 97bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill params.iterations = 10; 98bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill 99bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill subImageParams.push_back(params); 100bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill } 101bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill 102bbffd5562e33a6cf6f6f1bb5be6cfa30df8f36ecJamie Madill RunBenchmarks<TexSubImageBenchmark>(subImageParams); 103ffcc2e624763712ff9495bc4b343f40713bcc5a3Jamie Madill} 104