Commit 64ed0d75 by Alexis Hetu Committed by Alexis Hétu

Skeleton for Ozone FrameBuffer implementation

This cl simply makes the code compile on Ozone. It does not implement the FrameBufferOzone class, but provides a skeleton for it, which can be implemented by people on the ChromeOS team. Change-Id: Ib77e20b00e8208d992c80f47b5ba55e00254c812 Reviewed-on: https://swiftshader-review.googlesource.com/11348Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent c55dd840
......@@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import("//ui/ozone/ozone.gni")
import("../swiftshader.gni")
# Need a separate config to ensure the warnings are added to the end.
......@@ -46,7 +47,9 @@ swiftshader_source_set("swiftshader_main") {
"SwiftConfig.cpp",
]
if (is_linux) {
if (use_ozone) {
sources += [ "FrameBufferOzone.cpp" ]
} else if (is_linux) {
sources += [
"FrameBufferX11.cpp",
"libX11.cpp",
......
// Copyright 2017 The SwiftShader Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "FrameBufferOzone.hpp"
namespace sw
{
FrameBufferOzone::FrameBufferOzone(intptr_t display, intptr_t window, int width, int height) : FrameBuffer(width, height, false, false)
{
buffer = sw::Surface::create(width, height, 1, destFormat, nullptr,
sw::Surface::pitchB(width, destFormat, true),
sw::Surface::sliceB(width, height, destFormat, true));
}
FrameBufferOzone::~FrameBufferOzone()
{
delete buffer;
}
void *FrameBufferOzone::lock()
{
locked = buffer->lockInternal(0, 0, 0, sw::LOCK_READWRITE, sw::PUBLIC);
return locked;
}
void FrameBufferOzone::unlock()
{
buffer->unlockInternal();
locked = nullptr;
}
void FrameBufferOzone::blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride)
{
copy(source, sourceFormat, sourceStride);
}
}
NO_SANITIZE_FUNCTION sw::FrameBuffer *createFrameBuffer(void* display, intptr_t window, int width, int height)
{
return new sw::FrameBufferOzone((intptr_t)display, window, width, height);
}
// Copyright 2017 The SwiftShader Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef sw_FrameBufferOzone_hpp
#define sw_FrameBufferOzone_hpp
#include "Main/FrameBuffer.hpp"
namespace sw
{
class FrameBufferOzone : public FrameBuffer
{
public:
FrameBufferOzone(intptr_t display, intptr_t window, int width, int height);
~FrameBufferOzone() override;
void flip(void *source, Format sourceFormat, size_t sourceStride) override {blit(source, 0, 0, sourceFormat, sourceStride);};
void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride) override;
void *lock() override;
void unlock() override;
private:
sw::Surface* buffer;
};
}
#endif // sw_FrameBufferOzone_hpp
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment