1bdf2d80f459d43f5a6df074431bacf41584f81b7shannon.woods@transgaming.com#include "precompiled.h" 2d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com// 3358e88d786a5c48b45a28454861b7018ec39c95fshannon.woods@transgaming.com// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. 4d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com// Use of this source code is governed by a BSD-style license that can be 5d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com// found in the LICENSE file. 6d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com// 7d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 8d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com// ShaderExecutable9.cpp: Implements a D3D9-specific class to contain shader 9d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com// executable implementation details. 10d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 11d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com#include "libGLESv2/renderer/ShaderExecutable9.h" 12d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 13d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com#include "common/debug.h" 14d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 15d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.comnamespace rx 16d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{ 17d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 182275f9159895aefa0b9ae7deff08bc40b6f6ede8daniel@transgaming.comShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DPixelShader9 *executable) 197b18d0c45c43e19d2501a33f7f3c5bb66bf91f36daniel@transgaming.com : ShaderExecutable(function, length) 20d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{ 21d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com mPixelExecutable = executable; 22d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com mVertexExecutable = NULL; 23d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com} 24d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 252275f9159895aefa0b9ae7deff08bc40b6f6ede8daniel@transgaming.comShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DVertexShader9 *executable) 267b18d0c45c43e19d2501a33f7f3c5bb66bf91f36daniel@transgaming.com : ShaderExecutable(function, length) 27d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{ 28d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com mVertexExecutable = executable; 29d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com mPixelExecutable = NULL; 30d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com} 31d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 32d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.comShaderExecutable9::~ShaderExecutable9() 33d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{ 34d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com if (mVertexExecutable) 35d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com { 36d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com mVertexExecutable->Release(); 37d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com } 38d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com if (mPixelExecutable) 39d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com { 40d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com mPixelExecutable->Release(); 41d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com } 42d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com} 43d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 44d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.comShaderExecutable9 *ShaderExecutable9::makeShaderExecutable9(ShaderExecutable *executable) 45d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{ 468b400b1e8d84c5b93dd151807504a3e4b90d1b21apatrick@chromium.org ASSERT(HAS_DYNAMIC_TYPE(ShaderExecutable9*, executable)); 47d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com return static_cast<ShaderExecutable9*>(executable); 48d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com} 49d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 50358e88d786a5c48b45a28454861b7018ec39c95fshannon.woods@transgaming.comIDirect3DVertexShader9 *ShaderExecutable9::getVertexShader() const 51d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{ 52d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com return mVertexExecutable; 53d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com} 54d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 55358e88d786a5c48b45a28454861b7018ec39c95fshannon.woods@transgaming.comIDirect3DPixelShader9 *ShaderExecutable9::getPixelShader() const 56d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{ 57d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com return mPixelExecutable; 58d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com} 59d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com 60d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com}