mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 20:08:06 +02:00
Merge remote branch 'origin/7.8' into 7.8-gles
This commit is contained in:
commit
4784a5030a
5 changed files with 43 additions and 13 deletions
|
|
@ -1380,6 +1380,7 @@ _eglMain(const char *args)
|
|||
if (!dri2_drv)
|
||||
return NULL;
|
||||
|
||||
memset(dri2_drv, 0, sizeof *dri2_drv);
|
||||
_eglInitDriverFallbacks(&dri2_drv->base);
|
||||
dri2_drv->base.API.Initialize = dri2_initialize;
|
||||
dri2_drv->base.API.Terminate = dri2_terminate;
|
||||
|
|
|
|||
|
|
@ -1766,6 +1766,15 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
|
|||
unsigned i;
|
||||
|
||||
_XRead(dpy, (char *) propList, nPropListBytes);
|
||||
|
||||
/* Look up screen first so we can look up visuals/fbconfigs later */
|
||||
pProp = propList;
|
||||
for (i = 0; i < numValues; i++, pProp += 2)
|
||||
if (pProp[0] == GLX_SCREEN) {
|
||||
ctx->screen = pProp[1];
|
||||
ctx->psc = GetGLXScreenConfigs(dpy, ctx->screen);
|
||||
}
|
||||
|
||||
pProp = propList;
|
||||
for (i = 0; i < numValues; i++) {
|
||||
switch (*pProp++) {
|
||||
|
|
@ -1776,9 +1785,6 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
|
|||
ctx->mode =
|
||||
_gl_context_modes_find_visual(ctx->psc->visuals, *pProp++);
|
||||
break;
|
||||
case GLX_SCREEN:
|
||||
ctx->screen = *pProp++;
|
||||
break;
|
||||
case GLX_FBCONFIG_ID:
|
||||
ctx->mode =
|
||||
_gl_context_modes_find_fbconfig(ctx->psc->configs,
|
||||
|
|
@ -1787,6 +1793,7 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
|
|||
case GLX_RENDER_TYPE:
|
||||
ctx->renderType = *pProp++;
|
||||
break;
|
||||
case GLX_SCREEN:
|
||||
default:
|
||||
pProp++;
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -1004,7 +1004,20 @@ new_osmesa_renderbuffer(GLcontext *ctx, GLenum format, GLenum type)
|
|||
rb->AllocStorage = osmesa_renderbuffer_storage;
|
||||
|
||||
rb->InternalFormat = GL_RGBA;
|
||||
rb->Format = MESA_FORMAT_RGBA8888;
|
||||
switch (type) {
|
||||
case GL_UNSIGNED_BYTE:
|
||||
rb->Format = MESA_FORMAT_RGBA8888;
|
||||
break;
|
||||
case GL_UNSIGNED_SHORT:
|
||||
rb->Format = MESA_FORMAT_SIGNED_RGBA_16;
|
||||
break;
|
||||
case GL_FLOAT:
|
||||
rb->Format = MESA_FORMAT_RGBA_FLOAT32;
|
||||
break;
|
||||
default:
|
||||
assert(0 && "Unexpected type in new_osmesa_renderbuffer()");
|
||||
rb->Format = MESA_FORMAT_RGBA8888;
|
||||
}
|
||||
rb->_BaseFormat = GL_RGBA;
|
||||
rb->DataType = type;
|
||||
}
|
||||
|
|
@ -1167,11 +1180,9 @@ OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/* create front color buffer in user-provided memory (no back buffer) */
|
||||
osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, format, type);
|
||||
_mesa_add_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT, osmesa->rb);
|
||||
assert(osmesa->rb->RefCount == 2);
|
||||
|
||||
/* Create depth/stencil/accum buffers. We'll create the color
|
||||
* buffer later in OSMesaMakeCurrent().
|
||||
*/
|
||||
_mesa_add_soft_renderbuffers(osmesa->gl_buffer,
|
||||
GL_FALSE, /* color */
|
||||
osmesa->gl_visual->haveDepthBuffer,
|
||||
|
|
@ -1308,11 +1319,23 @@ OSMesaMakeCurrent( OSMesaContext osmesa, void *buffer, GLenum type,
|
|||
*/
|
||||
_glapi_check_multithread();
|
||||
|
||||
|
||||
/* Create a front/left color buffer which wraps the user-provided buffer.
|
||||
* There is no back color buffer.
|
||||
* If the user tries to use a 8, 16 or 32-bit/channel buffer that
|
||||
* doesn't match what Mesa was compiled for (CHAN_BITS) the
|
||||
* _mesa_add_renderbuffer() function will create a "wrapper" renderbuffer
|
||||
* that converts rendering from CHAN_BITS to the user-requested channel
|
||||
* size.
|
||||
*/
|
||||
osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, osmesa->format, type);
|
||||
_mesa_add_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT, osmesa->rb);
|
||||
assert(osmesa->rb->RefCount == 2);
|
||||
|
||||
/* Set renderbuffer fields. Set width/height = 0 to force
|
||||
* osmesa_renderbuffer_storage() being called by _mesa_resize_framebuffer()
|
||||
*/
|
||||
osmesa->rb->Data = buffer;
|
||||
osmesa->rb->DataType = type;
|
||||
osmesa->rb->Width = osmesa->rb->Height = 0;
|
||||
|
||||
/* Set the framebuffer's size. This causes the
|
||||
|
|
|
|||
|
|
@ -4187,11 +4187,10 @@ _slang_gen_variable(slang_assemble_ctx * A, slang_operation *oper)
|
|||
slang_atom name = oper->var ? oper->var->a_name : oper->a_id;
|
||||
slang_variable *var = _slang_variable_locate(oper->locals, name, GL_TRUE);
|
||||
slang_ir_node *n;
|
||||
if (!var) {
|
||||
if (!var || !var->declared) {
|
||||
slang_info_log_error(A->log, "undefined variable '%s'", (char *) name);
|
||||
return NULL;
|
||||
}
|
||||
assert(var->declared);
|
||||
n = new_var(A, var);
|
||||
return n;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ typedef struct slang_variable_
|
|||
GLuint size; /**< Variable's size in bytes */
|
||||
GLboolean is_global;
|
||||
GLboolean isTemp; /**< a named temporary (__resultTmp) */
|
||||
GLboolean declared; /**< for debug */
|
||||
GLboolean declared; /**< has the var been declared? */
|
||||
struct slang_ir_storage_ *store; /**< Storage for this var */
|
||||
} slang_variable;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue