ported my game from Irrlicht to Proton using the Proton-Irrlicht and have everything working on the emulator, but as soon as i run it on my galaxy nexus, all textures render white. game is 2D using ortho projection. render code is.

Code:
	irr::video::IVideoDriver *driver = device->getVideoDriver();

	scene::ICameraSceneNode *cam = (scene::ICameraSceneNode *)device->getSceneManager()->getSceneNodeFromType(scene::ESNT_CAMERA);

	if(cam == NULL)
	{
		cam = device->getSceneManager()->addCameraSceneNode();
	}

	core::matrix4 matproj;
	matproj.buildProjectionMatrixOrthoLH(SCREEN_WIDTH, -SCREEN_HEIGHT, -100.0f, 100.0f);
	matproj.setTranslation(core::vector3df(1, 1, 0));

	cam->setProjectionMatrix(matproj, true);
Code:
void Draw2D::DrawImage(irr::video::ITexture* texture , irr::core::vector2df position, irr::core::dimension2di size, irr::core::rect<irr::s32> sourceRect, irr::f32 rotation, irr::video::SColor color, irr::core::position2d<irr::s32> rotationPoint)
{
	if(texture == NULL || device == NULL)
		return;

	irr::video::IVideoDriver *driver = device->getVideoDriver();

	if(!size.Width || !size.Height)
	{
		size.Width = texture->getSize().Width;
		size.Height = texture->getSize().Height;
	}

	if(!sourceRect.getWidth() || !sourceRect.getHeight())
	{
		sourceRect.UpperLeftCorner.X = 0;
		sourceRect.UpperLeftCorner.Y = 0;
		sourceRect.LowerRightCorner.X = texture->getSize().Width;
		sourceRect.LowerRightCorner.Y = texture->getSize().Height;
	}
	else
	{
		sourceRect.LowerRightCorner.X += sourceRect.UpperLeftCorner.X;
		sourceRect.LowerRightCorner.Y += sourceRect.UpperLeftCorner.Y;
	}

	if(rotationPoint == irr::core::position2d<irr::s32>(-1, -1))
		rotationPoint = irr::core::position2d<irr::s32>((size.Width / 2) + position.X, (size.Height / 2) + position.Y);

	irr::video::SMaterial material;

	// Find the positions of corners
	irr::core::vector2df corner[4];

	corner[0] = irr::core::vector2df(position.X, position.Y);
	corner[1] = irr::core::vector2df(position.X + size.Width, position.Y);
	corner[2] = irr::core::vector2df(position.X, position.Y + size.Height);
	corner[3] = irr::core::vector2df(position.X + size.Width, position.Y + size.Height);

	// Rotate corners
	if(rotation != 0.0f)
		for(int x = 0; x < 4; x++)
			corner[x].rotateBy(rotation,irr::core::vector2df(rotationPoint.X, rotationPoint.Y));


	// Find the uv coordinates of the sourceRect
	irr::core::vector2df uvCorner[4];
	uvCorner[0] = irr::core::vector2df(sourceRect.UpperLeftCorner.X, sourceRect.UpperLeftCorner.Y);
	uvCorner[1] = irr::core::vector2df(sourceRect.LowerRightCorner.X, sourceRect.UpperLeftCorner.Y);
	uvCorner[2] = irr::core::vector2df(sourceRect.UpperLeftCorner.X, sourceRect.LowerRightCorner.Y);
	uvCorner[3] = irr::core::vector2df(sourceRect.LowerRightCorner.X, sourceRect.LowerRightCorner.Y);
	for(int x = 0; x < 4; x++)
	{
		float uvX = uvCorner[x].X/(float)texture->getSize().Width;
		float uvY = uvCorner[x].Y/(float)texture->getSize().Height;

		Clamp(uvX, 0.0, 1.0);
		Clamp(uvY, 0.0, 1.0);

		uvCorner[x] = irr::core::vector2df(uvX,uvY);
	}

	// Vertices for the image
	irr::video::S3DVertex vertices[4];
	irr::u16 indices[6] = { 0, 1, 2, 3 ,2 ,1 };

	for(int x = 0; x < 4; x++)
	{
		vertices[x].Pos = irr::core::vector3df(corner[x].X,corner[x].Y, 0);
		vertices[x].TCoords = uvCorner[x];
		vertices[x].Color = color;
	}
	material.Lighting = false;
	material.ZWriteEnable = false;
	material.TextureLayer[0].Texture = texture;
	material.TextureLayer[0].TextureWrapU = video::ETC_CLAMP;
	material.TextureLayer[0].TextureWrapV = video::ETC_CLAMP;
	//material.MaterialType = irr::video::ETC_CLAMP;
	//material.Wireframe = true;
	material.ZBuffer = video::ECFN_NEVER;
	material.setFlag(video::EMF_BILINEAR_FILTER, true);

	material.MaterialType = irr::video::EMT_TRANSPARENT_ALPHA_CHANNEL;

	driver->setMaterial(material);
	driver->drawIndexedTriangleList(vertices, 4, indices, 2);
	
	//__android_log_print(ANDROID_LOG_INFO, "Irrlicht", "texture size is %d x %d", texture->getSize().Width, texture->getSize().Height);	
}
thanks for any help.