Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a37f218 authored by Dan Stoza's avatar Dan Stoza Committed by android-build-merger
Browse files

libagl: Switch from gralloc to GraphicBufferMapper

am: 204240a8

Change-Id: I9f43911878549a281050b86af9b4430a35b15c04
parents 263f969a 204240a8
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -26,7 +26,8 @@
#endif

#include <private/pixelflinger/ggl_context.h>
#include <hardware/gralloc.h>

#include <system/window.h>

#include <GLES/gl.h>
#include <GLES/glext.h>
@@ -615,7 +616,7 @@ struct ogles_context_t {
    culling_t               cull;
    lighting_t              lighting;
    user_clip_planes_t      clipPlanes;
    compute_iterators_t     lerp;           __attribute__((aligned(32)));
    compute_iterators_t     lerp           __attribute__((aligned(32)));
    vertex_t                current;
    vec4_t                  currentColorClamped;
    vec3_t                  currentNormal;
+9 −19
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include <utils/threads.h>
#include <ui/ANativeObjectBase.h>
#include <ui/Fence.h>
#include <ui/GraphicBufferMapper.h>

#include <EGL/egl.h>
#include <EGL/eglext.h>
@@ -242,7 +243,6 @@ private:
    ANativeWindow*   nativeWindow;
    ANativeWindowBuffer*   buffer;
    ANativeWindowBuffer*   previousBuffer;
    gralloc_module_t const*    module;
    int width;
    int height;
    void* bits;
@@ -342,12 +342,8 @@ egl_window_surface_v2_t::egl_window_surface_v2_t(EGLDisplay dpy,
        int32_t depthFormat,
        ANativeWindow* window)
    : egl_surface_t(dpy, config, depthFormat),
    nativeWindow(window), buffer(0), previousBuffer(0), module(0),
    bits(NULL)
    nativeWindow(window), buffer(0), previousBuffer(0), bits(NULL)
{
    hw_module_t const* pModule;
    hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &pModule);
    module = reinterpret_cast<gralloc_module_t const*>(pModule);

    pixelFormatTable = gglGetPixelFormatTable();

@@ -440,22 +436,16 @@ void egl_window_surface_v2_t::disconnect()
status_t egl_window_surface_v2_t::lock(
        ANativeWindowBuffer* buf, int usage, void** vaddr)
{
    int err;

    err = module->lock(module, buf->handle,
            usage, 0, 0, buf->width, buf->height, vaddr);

    return err;
    auto& mapper = GraphicBufferMapper::get();
    return mapper.lock(buf->handle, usage,
            android::Rect(buf->width, buf->height), vaddr);
}

status_t egl_window_surface_v2_t::unlock(ANativeWindowBuffer* buf)
{
    if (!buf) return BAD_VALUE;
    int err = NO_ERROR;

    err = module->unlock(module, buf->handle);

    return err;
    auto& mapper = GraphicBufferMapper::get();
    return mapper.unlock(buf->handle);
}

void egl_window_surface_v2_t::copyBlt(
+1 −1
Original line number Diff line number Diff line
@@ -229,7 +229,7 @@ static inline void validate_light_mvi(ogles_context_t* c)
#endif
        vnorm3(l.normalizedObjPosition.v, l.objPosition.v);
    }
    const vec4_t eyeViewer = { 0, 0, 0x10000, 0 };
    const vec4_t eyeViewer = {{{ 0, 0, 0x10000, 0 }}};
#if OBJECT_SPACE_LIGHTING
    c->transforms.mvui.point3(&c->transforms.mvui,
            &c->lighting.objViewer, &eyeViewer);
+6 −6
Original line number Diff line number Diff line
@@ -253,13 +253,13 @@ void matrixf_t::multiply(matrixf_t& r, const matrixf_t& lhs, const matrixf_t& rh
{
    GLfloat const* const m = lhs.m;
    for (int i=0 ; i<4 ; i++) {
        register const float rhs_i0 = rhs.m[ I(i,0) ];
        register float ri0 = m[ I(0,0) ] * rhs_i0;
        register float ri1 = m[ I(0,1) ] * rhs_i0;
        register float ri2 = m[ I(0,2) ] * rhs_i0;
        register float ri3 = m[ I(0,3) ] * rhs_i0;
        const float rhs_i0 = rhs.m[ I(i,0) ];
        float ri0 = m[ I(0,0) ] * rhs_i0;
        float ri1 = m[ I(0,1) ] * rhs_i0;
        float ri2 = m[ I(0,2) ] * rhs_i0;
        float ri3 = m[ I(0,3) ] * rhs_i0;
        for (int j=1 ; j<4 ; j++) {
            register const float rhs_ij = rhs.m[ I(i,j) ];
            const float rhs_ij = rhs.m[ I(i,j) ];
            ri0 += m[ I(j,0) ] * rhs_ij;
            ri1 += m[ I(j,1) ] * rhs_ij;
            ri2 += m[ I(j,2) ] * rhs_ij;
+9 −16
Original line number Diff line number Diff line
@@ -25,6 +25,9 @@

#include <ETC1/etc1.h>

#include <ui/GraphicBufferMapper.h>
#include <ui/Rect.h>

namespace android {

// ----------------------------------------------------------------------------
@@ -128,17 +131,11 @@ void ogles_lock_textures(ogles_context_t* c)
            ANativeWindowBuffer* native_buffer = u.texture->buffer;
            if (native_buffer) {
                c->rasterizer.procs.activeTexture(c, i);
                hw_module_t const* pModule;
                if (hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &pModule))
                    continue;

                gralloc_module_t const* module =
                    reinterpret_cast<gralloc_module_t const*>(pModule);

                auto& mapper = GraphicBufferMapper::get();
                void* vaddr;
                int err = module->lock(module, native_buffer->handle,
                        GRALLOC_USAGE_SW_READ_OFTEN,
                        0, 0, native_buffer->width, native_buffer->height,
                mapper.lock(native_buffer->handle, GRALLOC_USAGE_SW_READ_OFTEN,
                        Rect(native_buffer->width, native_buffer->height),
                        &vaddr);

                u.texture->setImageBits(vaddr);
@@ -156,14 +153,10 @@ void ogles_unlock_textures(ogles_context_t* c)
            ANativeWindowBuffer* native_buffer = u.texture->buffer;
            if (native_buffer) {
                c->rasterizer.procs.activeTexture(c, i);
                hw_module_t const* pModule;
                if (hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &pModule))
                    continue;

                gralloc_module_t const* module =
                    reinterpret_cast<gralloc_module_t const*>(pModule);
                auto& mapper = GraphicBufferMapper::get();
                mapper.unlock(native_buffer->handle);

                module->unlock(module, native_buffer->handle);
                u.texture->setImageBits(NULL);
                c->rasterizer.procs.bindTexture(c, &(u.texture->surface));
            }
@@ -405,7 +398,7 @@ int createTextureSurface(ogles_context_t* c,
    return 0;
}

static size_t dataSizePalette4(int numLevels, int width, int height, int format)
static GLsizei dataSizePalette4(int numLevels, int width, int height, int format)
{
    int indexBits = 8;
    int entrySize = 0;