1d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com//
2358e88d786a5c48b45a28454861b7018ec39c95fshannon.woods@transgaming.com// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
3d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com// Use of this source code is governed by a BSD-style license that can be
4d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com// found in the LICENSE file.
5d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com//
6d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
7d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com// ShaderExecutable9.cpp: Implements a D3D9-specific class to contain shader
8d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com// executable implementation details.
9d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
10c7a4104957aa1f6fa36e4e9cf65d36b699eb05bdBrandon Jones#include "libGLESv2/renderer/d3d/d3d9/ShaderExecutable9.h"
11d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
12d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com#include "common/debug.h"
13d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
14d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.comnamespace rx
15d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{
16d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
172275f9159895aefa0b9ae7deff08bc40b6f6ede8daniel@transgaming.comShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DPixelShader9 *executable)
187b18d0c45c43e19d2501a33f7f3c5bb66bf91f36daniel@transgaming.com    : ShaderExecutable(function, length)
19d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{
20d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com    mPixelExecutable = executable;
21d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com    mVertexExecutable = NULL;
22d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com}
23d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
242275f9159895aefa0b9ae7deff08bc40b6f6ede8daniel@transgaming.comShaderExecutable9::ShaderExecutable9(const void *function, size_t length, IDirect3DVertexShader9 *executable)
257b18d0c45c43e19d2501a33f7f3c5bb66bf91f36daniel@transgaming.com    : ShaderExecutable(function, length)
26d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{
27d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com    mVertexExecutable = executable;
28d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com    mPixelExecutable = NULL;
29d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com}
30d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
31d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.comShaderExecutable9::~ShaderExecutable9()
32d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{
33ea2286352f5eba47dfaa3e9ab418bbacfd1ba8a1Geoff Lang    SafeRelease(mVertexExecutable);
34ea2286352f5eba47dfaa3e9ab418bbacfd1ba8a1Geoff Lang    SafeRelease(mPixelExecutable);
35d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com}
36d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
37d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.comShaderExecutable9 *ShaderExecutable9::makeShaderExecutable9(ShaderExecutable *executable)
38d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{
398b400b1e8d84c5b93dd151807504a3e4b90d1b21apatrick@chromium.org    ASSERT(HAS_DYNAMIC_TYPE(ShaderExecutable9*, executable));
40d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com    return static_cast<ShaderExecutable9*>(executable);
41d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com}
42d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
43358e88d786a5c48b45a28454861b7018ec39c95fshannon.woods@transgaming.comIDirect3DVertexShader9 *ShaderExecutable9::getVertexShader() const
44d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{
45d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com    return mVertexExecutable;
46d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com}
47d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
48358e88d786a5c48b45a28454861b7018ec39c95fshannon.woods@transgaming.comIDirect3DPixelShader9 *ShaderExecutable9::getPixelShader() const
49d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com{
50d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com    return mPixelExecutable;
51d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com}
52d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com
53d5d1019770f0de5dc1d8b356fa1df48019204378daniel@transgaming.com}