Add basic OpenGLES1.1 implementation #1101

Closed
wants to merge 1 commit into
from

Conversation

Projects
None yet
2 participants
@Schischu

Before we start, this pull request is mainly for discussing if openglesv1 support should ever be added to xbmc. This pull request is not yet complete and contains only very basic functionality to show what changes would be necessary to get basix opengles1.1 support.

ATM I am using GL_QUADS as the hardware blitter only knows 4point blits,
but I think that I will switch to 4point TRIANGLES_STRIP to be more standard conform.
As I am also writing the opengl library switching would not be a problem.

I did not really take care of the VideoRender stuff as I will not need it. My hardware renders directly into a layer behind the framebuffer. So basically just removing all the shader stuff so it compiles. It would be better if I could compile xbmc without the videorenders, but atm to many dependencies.

I also deactivated the visualizations as audio is decoded by the hardware. A pcm stream could be routed back, but only if it is downmixed (Surround ->Stereo). If the audio is routed directly undecoded to the av receiver then there will be never a pcm stream in the system. So pcm based visualizations wont work anyway.

So this is really just the basic stuff to get xbmc working with my gles1.1 implementation for sti7105/sti7111/sti7168 sh4 cpu arch based devices.

@jmarshallnz

This comment has been minimized.

Show comment
Hide comment
@jmarshallnz

jmarshallnz Jun 24, 2012

For this you could expose CBaseTexture::GetBlockSize()

For this you could expose CBaseTexture::GetBlockSize()

@jmarshallnz

This comment has been minimized.

Show comment
Hide comment
@jmarshallnz

jmarshallnz Jun 24, 2012

Don't you want to only set alpha to source[i], and everything else to 255?

Don't you want to only set alpha to source[i], and everything else to 255?

This comment has been minimized.

Show comment
Hide comment
@Schischu

Schischu Jun 25, 2012

Owner

Nope, I need premultiplied textures, so every pixel has to be multiplied with the alpha value.
And if the color is white then the premultiplied value is just repeating the alpha 4 times.

Btw. this has to be done as blitting A8 textures does not work, I always need RGB/ARGB

Owner

Schischu replied Jun 25, 2012

Nope, I need premultiplied textures, so every pixel has to be multiplied with the alpha value.
And if the color is white then the premultiplied value is just repeating the alpha 4 times.

Btw. this has to be done as blitting A8 textures does not work, I always need RGB/ARGB

@jmarshallnz

This comment has been minimized.

Show comment
Hide comment
@jmarshallnz

jmarshallnz Jun 24, 2012

The code for this is just underneath this, right?

The code for this is just underneath this, right?

This comment has been minimized.

Show comment
Hide comment
@Schischu

Schischu Jun 25, 2012

Owner

Yeah but in a slightly different order. QUADS are x1y1 -> x2y1 -> x2y2 -> x1y1 and TRIANGLE_STRIPS x1y1 -> x1y2 -> x2y1 -> x2y2.
This maybe changes if I move from QUADS to TRIANGLE_STRIPS, then the same code could be reused.

Owner

Schischu replied Jun 25, 2012

Yeah but in a slightly different order. QUADS are x1y1 -> x2y1 -> x2y2 -> x1y1 and TRIANGLE_STRIPS x1y1 -> x1y2 -> x2y1 -> x2y2.
This maybe changes if I move from QUADS to TRIANGLE_STRIPS, then the same code could be reused.

@jmarshallnz

This comment has been minimized.

Show comment
Hide comment

This comment has been minimized.

Show comment
Hide comment
@Schischu

Schischu Jun 25, 2012

Owner

I believe my intention was to ignore the second allocate call if the copy constructure has been used.
But not sure at the moment. Lets ignore this change for the moment.

Owner

Schischu replied Jun 25, 2012

I believe my intention was to ignore the second allocate call if the copy constructure has been used.
But not sure at the moment. Lets ignore this change for the moment.

@jmarshallnz

This comment has been minimized.

Show comment
Hide comment
@jmarshallnz

jmarshallnz Jun 24, 2012

is m_loadedToGPU set when m_pixels is non-NULL?

is m_loadedToGPU set when m_pixels is non-NULL?

@jmarshallnz

This comment has been minimized.

Show comment
Hide comment
@jmarshallnz

jmarshallnz Jun 24, 2012

Member

I've made some basic comments on the UI side of things. I wonder whether as the GLES1.1 branch follows the OpenGL branch most closely (basically it's a shader-free implementation?) that it might make sense to split the ifdef's slightly differently to reduce the amount of ifdef'ery.

Personally I'm against adding GLESv1.1 unless there's a definitive hardware platform that this opens XBMC up for, simply from a maintenance perspective.

Member

jmarshallnz commented Jun 24, 2012

I've made some basic comments on the UI side of things. I wonder whether as the GLES1.1 branch follows the OpenGL branch most closely (basically it's a shader-free implementation?) that it might make sense to split the ifdef's slightly differently to reduce the amount of ifdef'ery.

Personally I'm against adding GLESv1.1 unless there's a definitive hardware platform that this opens XBMC up for, simply from a maintenance perspective.

@jmarshallnz

This comment has been minimized.

Show comment
Hide comment
@jmarshallnz

jmarshallnz Apr 8, 2013

Member

Closing. No likely platform that's usable for XBMC that doesn't have GLES2

Member

jmarshallnz commented Apr 8, 2013

Closing. No likely platform that's usable for XBMC that doesn't have GLES2

@jmarshallnz jmarshallnz closed this Apr 8, 2013

tru added a commit to RasPlex/plex-home-theatre that referenced this pull request Apr 18, 2014

Merge pull request #1101 from RasPlex/PR-RPiTranscoderUpdate
[FIX] Fixes for CPlexTranscoderClientRPi after first release
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment