Mesa (master): radeon/llvm: fix calculation of max register number
Module: Mesa Branch: master Commit: 6574fe3c4a9e36791cde88dfd73429ba4faf3215 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6574fe3c4a9e36791cde88dfd73429ba4faf3215 Author: Christian König deathsim...@vodafone.de Date: Tue Jul 31 18:30:45 2012 +0200 radeon/llvm: fix calculation of max register number Signed-off-by: Christian König deathsim...@vodafone.de Reviewed-by: Tom Stellard thomas.stell...@amd.com --- src/gallium/drivers/radeon/SICodeEmitter.cpp |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/gallium/drivers/radeon/SICodeEmitter.cpp b/src/gallium/drivers/radeon/SICodeEmitter.cpp index a7647aa..9fc4aab 100644 --- a/src/gallium/drivers/radeon/SICodeEmitter.cpp +++ b/src/gallium/drivers/radeon/SICodeEmitter.cpp @@ -154,7 +154,7 @@ void SICodeEmitter::InitProgramInfo(MachineFunction MF) { assert(!Unknown register class); } hwReg = RI-getHWRegNum(reg); -maxUsed = ((hwReg + 1) * width) - 1; +maxUsed = hwReg + width - 1; if (isSGPR) { MaxSGPR = maxUsed MaxSGPR ? maxUsed : MaxSGPR; } else { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon/r200: fix bogus assert/scissor wrt width/height 2048
Module: Mesa Branch: master Commit: 5b88a2a22daae4d09596804d8edc6b8796d05150 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5b88a2a22daae4d09596804d8edc6b8796d05150 Author: Roland Scheidegger srol...@vmware.com Date: Fri Jul 27 04:03:45 2012 +0200 radeon/r200: fix bogus assert/scissor wrt width/height 2048 This addresses one issue raised in bug #51658 discovered by Eugene St Leger. The assert is bogus since there's no problem with texture width/height being 2048 (the width/height programmed is width/height minus one). OTOH though the programmed size for scissor rect should be width/height minus one too otherwise bad things may happen (as it is inclusive, and there's not enough bits for more than a value of 2047). --- src/mesa/drivers/dri/r200/r200_blit.c |8 src/mesa/drivers/dri/radeon/radeon_blit.c |8 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/mesa/drivers/dri/r200/r200_blit.c b/src/mesa/drivers/dri/r200/r200_blit.c index fbded53..e3124b3 100644 --- a/src/mesa/drivers/dri/r200/r200_blit.c +++ b/src/mesa/drivers/dri/r200/r200_blit.c @@ -108,8 +108,8 @@ static void inline emit_tx_setup(struct r200_context *r200, uint32_t txformat = R200_TXFORMAT_NON_POWER2; BATCH_LOCALS(r200-radeon); -assert(width = 2047); -assert(height = 2047); +assert(width = 2048); +assert(height = 2048); assert(offset % 32 == 0); /* XXX others? BE/LE? */ @@ -341,8 +341,8 @@ static inline void emit_cb_setup(struct r200_context *r200, OUT_BATCH_REGVAL(R200_RE_AUX_SCISSOR_CNTL, 0); OUT_BATCH_REGVAL(R200_RE_CNTL, 0); OUT_BATCH_REGVAL(RADEON_RE_TOP_LEFT, 0); -OUT_BATCH_REGVAL(RADEON_RE_WIDTH_HEIGHT, ((width RADEON_RE_WIDTH_SHIFT) | - (height RADEON_RE_HEIGHT_SHIFT))); +OUT_BATCH_REGVAL(RADEON_RE_WIDTH_HEIGHT, (((width - 1) RADEON_RE_WIDTH_SHIFT) | + ((height - 1) RADEON_RE_HEIGHT_SHIFT))); OUT_BATCH_REGVAL(RADEON_RB3D_PLANEMASK, 0x); OUT_BATCH_REGVAL(RADEON_RB3D_BLENDCNTL, RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO); OUT_BATCH_REGVAL(RADEON_RB3D_CNTL, dst_format); diff --git a/src/mesa/drivers/dri/radeon/radeon_blit.c b/src/mesa/drivers/dri/radeon/radeon_blit.c index 4233221..b4932a2 100644 --- a/src/mesa/drivers/dri/radeon/radeon_blit.c +++ b/src/mesa/drivers/dri/radeon/radeon_blit.c @@ -102,8 +102,8 @@ static void inline emit_tx_setup(struct r100_context *r100, uint32_t txformat = RADEON_TXFORMAT_NON_POWER2; BATCH_LOCALS(r100-radeon); -assert(width = 2047); -assert(height = 2047); +assert(width = 2048); +assert(height = 2048); assert(offset % 32 == 0); /* XXX others? BE/LE? */ @@ -216,8 +216,8 @@ static inline void emit_cb_setup(struct r100_context *r100, BEGIN_BATCH_NO_AUTOSTATE(18); OUT_BATCH_REGVAL(RADEON_RE_TOP_LEFT, 0); -OUT_BATCH_REGVAL(RADEON_RE_WIDTH_HEIGHT, ((width RADEON_RE_WIDTH_SHIFT) | - (height RADEON_RE_HEIGHT_SHIFT))); +OUT_BATCH_REGVAL(RADEON_RE_WIDTH_HEIGHT, (((width - 1) RADEON_RE_WIDTH_SHIFT) | + ((height - 1) RADEON_RE_HEIGHT_SHIFT))); OUT_BATCH_REGVAL(RADEON_RB3D_PLANEMASK, 0x); OUT_BATCH_REGVAL(RADEON_RB3D_BLENDCNTL, RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO); OUT_BATCH_REGVAL(RADEON_RB3D_CNTL, dst_format); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon/r200: fix bogus clears
Module: Mesa Branch: master Commit: de694b6b10b7ce23a00cd7296a955f162704ee62 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=de694b6b10b7ce23a00cd7296a955f162704ee62 Author: Roland Scheidegger srol...@vmware.com Date: Fri Jul 27 03:43:11 2012 +0200 radeon/r200: fix bogus clears There were several problems with these functions (which are a remnant of dri1 hyperz mostly - should bring it back somehow someday). First, it would always do a swrast clear if the buffer to clear was a fbo. Second, for buffers we wouldn't handle the clear (I guess aux/accum?) we would actually still have tried to clear that later even when we already cleared it with swrast. --- src/mesa/drivers/dri/r200/r200_ioctl.c | 37 --- src/mesa/drivers/dri/radeon/radeon_ioctl.c | 37 --- 2 files changed, 22 insertions(+), 52 deletions(-) diff --git a/src/mesa/drivers/dri/r200/r200_ioctl.c b/src/mesa/drivers/dri/r200/r200_ioctl.c index e548fac..faa9f16 100644 --- a/src/mesa/drivers/dri/r200/r200_ioctl.c +++ b/src/mesa/drivers/dri/r200/r200_ioctl.c @@ -57,8 +57,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. static void r200Clear( struct gl_context *ctx, GLbitfield mask ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - GLuint flags = 0; - GLuint orig_mask = mask; + GLuint hwmask, swmask; + GLuint hwbits = BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT | + BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL | + BUFFER_BIT_COLOR0; if ( R200_DEBUG RADEON_IOCTL ) { if (rmesa-radeon.sarea) @@ -69,36 +71,19 @@ static void r200Clear( struct gl_context *ctx, GLbitfield mask ) radeonFlush( ctx ); - if ( mask BUFFER_BIT_FRONT_LEFT ) { - flags |= RADEON_FRONT; - mask = ~BUFFER_BIT_FRONT_LEFT; - } - - if ( mask BUFFER_BIT_BACK_LEFT ) { - flags |= RADEON_BACK; - mask = ~BUFFER_BIT_BACK_LEFT; - } - - if ( mask BUFFER_BIT_DEPTH ) { - flags |= RADEON_DEPTH; - mask = ~BUFFER_BIT_DEPTH; - } - - if ( (mask BUFFER_BIT_STENCIL) ) { - flags |= RADEON_STENCIL; - mask = ~BUFFER_BIT_STENCIL; - } + hwmask = mask hwbits; + swmask = mask ~hwbits; - if ( mask ) { + if ( swmask ) { if (R200_DEBUG RADEON_FALLBACKS) -fprintf(stderr, %s: swrast clear, mask: %x\n, __FUNCTION__, mask); - _swrast_Clear( ctx, mask ); +fprintf(stderr, %s: swrast clear, mask: %x\n, __FUNCTION__, swmask); + _swrast_Clear( ctx, swmask ); } - if ( !flags ) + if ( !hwmask ) return; - radeonUserClear(ctx, orig_mask); + radeonUserClear(ctx, hwmask); } GLboolean r200IsGartMemory( r200ContextPtr rmesa, const GLvoid *pointer, diff --git a/src/mesa/drivers/dri/radeon/radeon_ioctl.c b/src/mesa/drivers/dri/radeon/radeon_ioctl.c index 22118a7..c6c8b05 100644 --- a/src/mesa/drivers/dri/radeon/radeon_ioctl.c +++ b/src/mesa/drivers/dri/radeon/radeon_ioctl.c @@ -381,8 +381,10 @@ void radeonEmitAOS( r100ContextPtr rmesa, static void radeonClear( struct gl_context *ctx, GLbitfield mask ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); - GLuint flags = 0; - GLuint orig_mask = mask; + GLuint hwmask, swmask; + GLuint hwbits = BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT | + BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL | + BUFFER_BIT_COLOR0; if (mask (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_FRONT_RIGHT)) { rmesa-radeon.front_buffer_dirty = GL_TRUE; @@ -394,36 +396,19 @@ static void radeonClear( struct gl_context *ctx, GLbitfield mask ) radeon_firevertices(rmesa-radeon); - if ( mask BUFFER_BIT_FRONT_LEFT ) { - flags |= RADEON_FRONT; - mask = ~BUFFER_BIT_FRONT_LEFT; - } - - if ( mask BUFFER_BIT_BACK_LEFT ) { - flags |= RADEON_BACK; - mask = ~BUFFER_BIT_BACK_LEFT; - } - - if ( mask BUFFER_BIT_DEPTH ) { - flags |= RADEON_DEPTH; - mask = ~BUFFER_BIT_DEPTH; - } - - if ( (mask BUFFER_BIT_STENCIL) ) { - flags |= RADEON_STENCIL; - mask = ~BUFFER_BIT_STENCIL; - } + hwmask = mask hwbits; + swmask = mask ~hwbits; - if ( mask ) { + if ( swmask ) { if (RADEON_DEBUG RADEON_FALLBACKS) -fprintf(stderr, %s: swrast clear, mask: %x\n, __FUNCTION__, mask); - _swrast_Clear( ctx, mask ); +fprintf(stderr, %s: swrast clear, mask: %x\n, __FUNCTION__, swmask); + _swrast_Clear( ctx, swmask ); } - if ( !flags ) + if ( !hwmask ) return; - radeonUserClear(ctx, orig_mask); + radeonUserClear(ctx, hwmask); } void radeonInitIoctlFuncs( struct gl_context *ctx ) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon/r200: get rid of some unneeded cliprect/scissor code
Module: Mesa Branch: master Commit: c0c216c4690f1d39ae384b45be5d5350d5bde875 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0c216c4690f1d39ae384b45be5d5350d5bde875 Author: Roland Scheidegger srol...@vmware.com Date: Fri Jul 27 03:49:25 2012 +0200 radeon/r200: get rid of some unneeded cliprect/scissor code Noone was interested in the number of cliprects, and noone cared about the intersect result neither. So just nuke this. --- src/mesa/drivers/dri/radeon/radeon_common.c| 56 +-- src/mesa/drivers/dri/radeon/radeon_common.h|1 - .../drivers/dri/radeon/radeon_common_context.c |4 -- .../drivers/dri/radeon/radeon_common_context.h |4 -- 4 files changed, 3 insertions(+), 62 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c index a8dfae0..c9f9b20 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.c +++ b/src/mesa/drivers/dri/radeon/radeon_common.c @@ -67,57 +67,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Scissoring */ -static GLboolean intersect_rect(drm_clip_rect_t * out, - drm_clip_rect_t * a, drm_clip_rect_t * b) -{ - *out = *a; - if (b-x1 out-x1) - out-x1 = b-x1; - if (b-y1 out-y1) - out-y1 = b-y1; - if (b-x2 out-x2) - out-x2 = b-x2; - if (b-y2 out-y2) - out-y2 = b-y2; - if (out-x1 = out-x2) - return GL_FALSE; - if (out-y1 = out-y2) - return GL_FALSE; - return GL_TRUE; -} - -void radeonRecalcScissorRects(radeonContextPtr radeon) -{ - struct gl_context *ctx = radeon-glCtx; - drm_clip_rect_t bounds; - - bounds.x1 = 0; - bounds.y1 = 0; - bounds.x2 = ctx-DrawBuffer-Width; - bounds.y2 = ctx-DrawBuffer-Height; - - if (!radeon-state.scissor.numAllocedClipRects) { - radeon-state.scissor.numAllocedClipRects = 1; - radeon-state.scissor.pClipRects = - MALLOC(sizeof(drm_clip_rect_t)); - - if (radeon-state.scissor.pClipRects == NULL) { - radeon-state.scissor.numAllocedClipRects = 0; - return; - } - } - - radeon-state.scissor.numClipRects = 0; - if (intersect_rect(radeon-state.scissor.pClipRects, - bounds, - radeon-state.scissor.rect)) { - radeon-state.scissor.numClipRects = 1; - } - - if (radeon-vtbl.update_scissor) - radeon-vtbl.update_scissor(radeon-glCtx); -} - /** * Update cliprects and scissors. */ @@ -149,7 +98,7 @@ void radeonSetCliprects(radeonContextPtr radeon) } if (radeon-state.scissor.enabled) - radeonRecalcScissorRects(radeon); + radeonUpdateScissor(radeon-glCtx); } @@ -187,7 +136,8 @@ void radeonUpdateScissor( struct gl_context *ctx ) rmesa-state.scissor.rect.x2 = CLAMP(x2, min_x, max_x); rmesa-state.scissor.rect.y2 = CLAMP(y2, min_y, max_y); - radeonRecalcScissorRects( rmesa ); + if (rmesa-vtbl.update_scissor) + rmesa-vtbl.update_scissor(ctx); } /* = diff --git a/src/mesa/drivers/dri/radeon/radeon_common.h b/src/mesa/drivers/dri/radeon/radeon_common.h index 6f9b5b9..636822f 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.h +++ b/src/mesa/drivers/dri/radeon/radeon_common.h @@ -6,7 +6,6 @@ #include radeon_texture.h void radeonUserClear(struct gl_context *ctx, GLuint mask); -void radeonRecalcScissorRects(radeonContextPtr radeon); void radeonSetCliprects(radeonContextPtr radeon); void radeonUpdateScissor( struct gl_context *ctx ); void radeonScissor(struct gl_context* ctx, GLint x, GLint y, GLsizei w, GLsizei h); diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c index b5fe7cd..8ea8925 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c @@ -260,10 +260,6 @@ void radeonDestroyContext(__DRIcontext *driContextPriv ) radeon_destroy_atom_list(radeon); - if (radeon-state.scissor.pClipRects) { - FREE(radeon-state.scissor.pClipRects); - radeon-state.scissor.pClipRects = 0; - } #ifdef RADEON_BO_TRACK track = fopen(/tmp/tracklog, w); if (track) { diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.h b/src/mesa/drivers/dri/radeon/radeon_common_context.h index 11275f8..5c23892 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.h +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.h @@ -122,10 +122,6 @@ struct radeon_depthbuffer_state { struct radeon_scissor_state { drm_clip_rect_t rect; GLboolean
Mesa (master): r200: get rid of dubious aux scissor bits
Module: Mesa Branch: master Commit: be2dcc5e9f61d380aec93eeb01227cbb6b5037c1 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=be2dcc5e9f61d380aec93eeb01227cbb6b5037c1 Author: Roland Scheidegger srol...@vmware.com Date: Fri Jul 27 03:58:45 2012 +0200 r200: get rid of dubious aux scissor bits no point in emitting aux scissor values if we a) never enable them b) never set the actual values plus it is enough to have that aux scissor enable reg (which we never set to enable) in one place not two. --- src/mesa/drivers/dri/r200/r200_context.h| 35 +++--- src/mesa/drivers/dri/r200/r200_state_init.c |4 --- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/src/mesa/drivers/dri/r200/r200_context.h b/src/mesa/drivers/dri/r200/r200_context.h index e0d5693..778934d 100644 --- a/src/mesa/drivers/dri/r200/r200_context.h +++ b/src/mesa/drivers/dri/r200/r200_context.h @@ -442,19 +442,16 @@ struct r200_texture_state { #define CST_RB3D_DEPTHXY_OFFSET 3 #define CST_CMD_2 4 #define CST_RE_AUX_SCISSOR_CNTL 5 -#define CST_CMD_3 6 -#define CST_RE_SCISSOR_TL_0 7 -#define CST_RE_SCISSOR_BR_0 8 -#define CST_CMD_4 9 -#define CST_SE_VAP_CNTL_STATUS10 -#define CST_CMD_5 11 -#define CST_RE_POINTSIZE 12 -#define CST_CMD_6 13 -#define CST_SE_TCL_INPUT_VTX_014 -#define CST_SE_TCL_INPUT_VTX_115 -#define CST_SE_TCL_INPUT_VTX_216 -#define CST_SE_TCL_INPUT_VTX_317 -#define CST_STATE_SIZE18 +#define CST_CMD_4 6 +#define CST_SE_VAP_CNTL_STATUS7 +#define CST_CMD_5 8 +#define CST_RE_POINTSIZE 9 +#define CST_CMD_6 10 +#define CST_SE_TCL_INPUT_VTX_011 +#define CST_SE_TCL_INPUT_VTX_112 +#define CST_SE_TCL_INPUT_VTX_213 +#define CST_SE_TCL_INPUT_VTX_314 +#define CST_STATE_SIZE15 #define PRF_CMD_0 0 #define PRF_PP_TRI_PERF 1 @@ -462,13 +459,11 @@ struct r200_texture_state { #define PRF_STATE_SIZE3 -#define SCI_CMD_0 0 -#define SCI_RE_AUX1 -#define SCI_CMD_1 2 -#define SCI_XY_1 3 -#define SCI_CMD_2 4 -#define SCI_XY_2 5 -#define SCI_STATE_SIZE6 +#define SCI_CMD_1 0 +#define SCI_XY_1 1 +#define SCI_CMD_2 2 +#define SCI_XY_2 3 +#define SCI_STATE_SIZE4 #define R200_QUERYOBJ_CMD_0 0 #define R200_QUERYOBJ_DATA_0 1 diff --git a/src/mesa/drivers/dri/r200/r200_state_init.c b/src/mesa/drivers/dri/r200/r200_state_init.c index 2fe3f94..a19e858 100644 --- a/src/mesa/drivers/dri/r200/r200_state_init.c +++ b/src/mesa/drivers/dri/r200/r200_state_init.c @@ -762,7 +762,6 @@ void r200InitState( r200ContextPtr rmesa ) rmesa-hw.cst.cmd[CST_CMD_0] = cmdpkt(rmesa, R200_EMIT_PP_CNTL_X); rmesa-hw.cst.cmd[CST_CMD_1] = cmdpkt(rmesa, R200_EMIT_RB3D_DEPTHXY_OFFSET); rmesa-hw.cst.cmd[CST_CMD_2] = cmdpkt(rmesa, R200_EMIT_RE_AUX_SCISSOR_CNTL); - rmesa-hw.cst.cmd[CST_CMD_3] = cmdpkt(rmesa, R200_EMIT_RE_SCISSOR_TL_0); rmesa-hw.cst.cmd[CST_CMD_4] = cmdpkt(rmesa, R200_EMIT_SE_VAP_CNTL_STATUS); rmesa-hw.cst.cmd[CST_CMD_5] = cmdpkt(rmesa, R200_EMIT_RE_POINTSIZE); rmesa-hw.cst.cmd[CST_CMD_6] = cmdpkt(rmesa, R200_EMIT_TCL_INPUT_VTX_VECTOR_ADDR_0); @@ -815,7 +814,6 @@ void r200InitState( r200ContextPtr rmesa ) rmesa-hw.prf.cmd[PRF_CMD_0] = cmdpkt(rmesa, R200_EMIT_PP_TRI_PERF_CNTL); rmesa-hw.spr.cmd[SPR_CMD_0] = cmdpkt(rmesa, R200_EMIT_TCL_POINT_SPRITE_CNTL); - rmesa-hw.sci.cmd[SCI_CMD_0] = CP_PACKET0(R200_RE_AUX_SCISSOR_CNTL, 0); rmesa-hw.sci.cmd[SCI_CMD_1] = CP_PACKET0(R200_RE_TOP_LEFT, 0); rmesa-hw.sci.cmd[SCI_CMD_2] = CP_PACKET0(R200_RE_WIDTH_HEIGHT, 0); @@ -1026,8 +1024,6 @@ void r200InitState( r200ContextPtr rmesa ) rmesa-hw.cst.cmd[CST_PP_CNTL_X] = 0; rmesa-hw.cst.cmd[CST_RB3D_DEPTHXY_OFFSET] = 0; rmesa-hw.cst.cmd[CST_RE_AUX_SCISSOR_CNTL] = 0x0; - rmesa-hw.cst.cmd[CST_RE_SCISSOR_TL_0] = 0; - rmesa-hw.cst.cmd[CST_RE_SCISSOR_BR_0] = 0; rmesa-hw.cst.cmd[CST_SE_VAP_CNTL_STATUS] = #ifdef MESA_BIG_ENDIAN R200_VC_32BIT_SWAP; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): linux: Default to dri not xlib on all arches
Module: Mesa Branch: master Commit: 33ef67ab20de9b04f7d3d32f01cb87c29034db88 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=33ef67ab20de9b04f7d3d32f01cb87c29034db88 Author: Adam Jackson a...@redhat.com Date: Wed Aug 1 11:44:28 2012 -0400 linux: Default to dri not xlib on all arches Even on s390{,x} where there's no video card, you still want this so GLX protocol works. Reviewed-by: Matt Turner matts...@gmail.com Signed-off-by: Adam Jackson a...@redhat.com --- configure.ac |4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index b01b192..258c8ba 100644 --- a/configure.ac +++ b/configure.ac @@ -723,9 +723,7 @@ default_driver=xlib case $host_os in linux*) -case $host_cpu in -i*86|x86_64|powerpc*|sparc*|ia64*) default_driver=dri;; -esac +default_driver=dri;; ;; *freebsd* | dragonfly* | *netbsd*) case $host_cpu in ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): configure.ac: remove remnants of ppc asm support
Module: Mesa Branch: master Commit: 0e38a3ca52d8372307a10f8a1aa2ef4a24f0dc79 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0e38a3ca52d8372307a10f8a1aa2ef4a24f0dc79 Author: Matt Turner matts...@gmail.com Date: Wed Aug 1 08:27:37 2012 -0700 configure.ac: remove remnants of ppc asm support Missed by d387899388bd7090bda50593e35f8ed3cb730c47. Reviewed-by: Adam Jackson a...@redhat.com --- configure.ac |7 --- 1 files changed, 0 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 258c8ba..60eaaf2 100644 --- a/configure.ac +++ b/configure.ac @@ -470,13 +470,6 @@ if test x$enable_asm = xyes; then ;; esac ;; -powerpc) -case $host_os in -linux*) -asm_arch=ppc -;; -esac -;; sparc*) case $host_os in linux*) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): configure.ac: Remove contractions to stop breaking syntax highlighting
Module: Mesa Branch: master Commit: 14819eb58831ce197afe8abe8837057e02475d94 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=14819eb58831ce197afe8abe8837057e02475d94 Author: Matt Turner matts...@gmail.com Date: Wed Aug 1 08:32:49 2012 -0700 configure.ac: Remove contractions to stop breaking syntax highlighting Reviewed-by: Adam Jackson a...@redhat.com --- configure.ac |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 60eaaf2..87fb859 100644 --- a/configure.ac +++ b/configure.ac @@ -284,11 +284,11 @@ dnl explicitly requested. If both disabled, set to static since shared dnl was explicitly requested. case x$enable_static$enable_shared in xyesyes ) -AC_MSG_WARN([Can't build static and shared libraries, disabling shared]) +AC_MSG_WARN([Cannot build static and shared libraries, disabling shared]) enable_shared=no ;; xnono ) -AC_MSG_WARN([Can't disable both static and shared libraries, enabling static]) +AC_MSG_WARN([Cannot disable both static and shared libraries, enabling static]) enable_static=yes ;; esac @@ -873,7 +873,7 @@ PKG_CHECK_MODULES([LIBDRM], [libdrm = $LIBDRM_REQUIRED], if test x$enable_dri = xyes; then # DRI must be shared, I think if test $enable_static = yes; then -AC_MSG_ERROR([Can't use static libraries for DRI drivers]) +AC_MSG_ERROR([Cannot use static libraries for DRI drivers]) fi # not a hard requirement as swrast does not depend on it @@ -1126,7 +1126,7 @@ yes) dri_drivers=`IFS=', '; echo $with_dri_drivers` for driver in $dri_drivers; do test -d $srcdir/src/mesa/drivers/dri/$driver || \ -AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist]) +AC_MSG_ERROR([DRI driver directory '$driver' does not exist]) done DRI_DIRS=$dri_drivers if test -n $DRI_DIRS -a x$enable_opengl != xyes; then ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): configure.ac: Don't duplicate CFLAGS
Module: Mesa Branch: master Commit: 33ae29c93b8f70a86dcedc495dd658a5d5679db3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=33ae29c93b8f70a86dcedc495dd658a5d5679db3 Author: Matt Turner matts...@gmail.com Date: Wed Aug 1 08:38:35 2012 -0700 configure.ac: Don't duplicate CFLAGS These assignments caused CFLAGS specified on the configure line to appear twice in the final CFLAGS. Removing them makes the behavior reasonable -- USER_CFLAGS are appended at the end of CFLAGS, allowing the builder to override flags added by configure.ac like -fno-strict-aliasing. Reviewed-by: Adam Jackson a...@redhat.com --- configure.ac |4 1 files changed, 0 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 87fb859..2b5abb4 100644 --- a/configure.ac +++ b/configure.ac @@ -26,10 +26,6 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) LT_PREREQ([2.2]) LT_INIT([disable-static]) -dnl Save user CFLAGS and CXXFLAGS so one can override the default ones -USER_CFLAGS=$CFLAGS -USER_CXXFLAGS=$CXXFLAGS - dnl Versions for external dependencies LIBDRM_REQUIRED=2.4.24 LIBDRM_RADEON_REQUIRED=2.4.31 ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): configure.ac: Remove extra ;;
Module: Mesa Branch: master Commit: 84ead7b4e861c14ee24b96f8892230744640f0df URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=84ead7b4e861c14ee24b96f8892230744640f0df Author: Matt Turner matts...@gmail.com Date: Wed Aug 1 10:11:46 2012 -0700 configure.ac: Remove extra ;; Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=53053 --- configure.ac |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/configure.ac b/configure.ac index 2b5abb4..f7fbf99 100644 --- a/configure.ac +++ b/configure.ac @@ -712,7 +712,7 @@ default_driver=xlib case $host_os in linux*) -default_driver=dri;; +default_driver=dri ;; *freebsd* | dragonfly* | *netbsd*) case $host_cpu in ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): intel: Remove dead code in intelAllocateBuffer
Module: Mesa Branch: master Commit: 83fa0842ca0772e9a3493bd7a66f69c458a1739b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=83fa0842ca0772e9a3493bd7a66f69c458a1739b Author: Chad Versace chad.vers...@linux.intel.com Date: Mon Jul 9 15:51:06 2012 -0700 intel: Remove dead code in intelAllocateBuffer After commit intel: Convert to using private depth/stencil buffers, we request from DRI2GetBuffersWithFormat only the front left and back left buffers. We no longer request depth and stencil buffers. Assert that in intelAllocateBuffer and remove the related dead code. Reviewed-by: Paul Berry stereotype...@gmail.com Signed-off-by: Chad Versace chad.vers...@linux.intel.com --- src/mesa/drivers/dri/intel/intel_screen.c | 92 ++-- 1 files changed, 7 insertions(+), 85 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index e8a4ad1..41d4726 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -972,54 +972,6 @@ struct intel_buffer { struct intel_region *region; }; -/** - * \brief Get tiling format for a DRI buffer. - * - * \param attachment is the buffer's attachmet point, such as - *__DRI_BUFFER_DEPTH. - * \param out_tiling is the returned tiling format for buffer. - * \return false if attachment is unrecognized or is incompatible with screen. - */ -static bool -intel_get_dri_buffer_tiling(struct intel_screen *screen, -uint32_t attachment, -uint32_t *out_tiling) -{ - if (screen-gen 4) { - *out_tiling = I915_TILING_X; - return true; - } - - switch (attachment) { - case __DRI_BUFFER_DEPTH: - case __DRI_BUFFER_DEPTH_STENCIL: - case __DRI_BUFFER_HIZ: - *out_tiling = I915_TILING_Y; - return true; - case __DRI_BUFFER_ACCUM: - case __DRI_BUFFER_FRONT_LEFT: - case __DRI_BUFFER_FRONT_RIGHT: - case __DRI_BUFFER_BACK_LEFT: - case __DRI_BUFFER_BACK_RIGHT: - case __DRI_BUFFER_FAKE_FRONT_LEFT: - case __DRI_BUFFER_FAKE_FRONT_RIGHT: - *out_tiling = I915_TILING_X; - return true; - case __DRI_BUFFER_STENCIL: - /* The stencil buffer is W tiled. However, we request from the kernel - * a non-tiled buffer because the GTT is incapable of W fencing. - */ - *out_tiling = I915_TILING_NONE; - return true; - default: - if(unlikely(INTEL_DEBUG DEBUG_DRI)) { -fprintf(stderr, error: %s: unrecognized DRI buffer attachment 0x%x\n, -__FUNCTION__, attachment); - } - return false; - } -} - static __DRIbuffer * intelAllocateBuffer(__DRIscreen *screen, unsigned attachment, unsigned format, @@ -1028,49 +980,19 @@ intelAllocateBuffer(__DRIscreen *screen, struct intel_buffer *intelBuffer; struct intel_screen *intelScreen = screen-driverPrivate; - uint32_t tiling; - uint32_t region_width; - uint32_t region_height; - uint32_t region_cpp; - - bool ok = true; - - ok = intel_get_dri_buffer_tiling(intelScreen, attachment, tiling); - if (!ok) - return NULL; + assert(attachment == __DRI_BUFFER_FRONT_LEFT || + attachment == __DRI_BUFFER_BACK_LEFT); intelBuffer = CALLOC(sizeof *intelBuffer); if (intelBuffer == NULL) return NULL; - if (attachment == __DRI_BUFFER_STENCIL) { - /* Stencil buffers use W tiling, a tiling format that the DRM functions - * don't properly account for. Therefore, when we allocate a stencil - * buffer that is private to Mesa (see intel_miptree_create), we round - * the height and width up to the next multiple of the tile size (64x64) - * and then ask DRM to allocate an untiled buffer. Consequently, the - * height and the width stored in the stencil buffer's region structure - * are always multiples of 64, even if the stencil buffer itself is - * smaller. - * - * To avoid inconsistencies between how we represent private buffers and - * buffers shared with the window system, round up the height and width - * for window system buffers too. - */ - region_width = ALIGN(width, 64); - region_height = ALIGN(height, 64); - } else { - region_width = width; - region_height = height; - } - - region_cpp = format / 8; - + /* The front and back buffers are color buffers, which are X tiled. */ intelBuffer-region = intel_region_alloc(intelScreen, -tiling, -region_cpp, -region_width, -region_height, +I915_TILING_X, +format / 8, +width, +height,
Mesa (master): intel: Decrease nesting level in intelCreateBuffer
Module: Mesa Branch: master Commit: 2b4fbc4d7d3578642ca57b5e45094e66e03626fc URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b4fbc4d7d3578642ca57b5e45094e66e03626fc Author: Chad Versace chad.vers...@linux.intel.com Date: Mon Jul 9 16:51:23 2012 -0700 intel: Decrease nesting level in intelCreateBuffer Nearly the whole function body was contained in the 'else' branch. The 'if' branch did one thing: return early with an error. Clean things up by moving all the code out of the 'else' branch. Decreases max nesting level from 4 to 3. Reviewed-by: Paul Berry stereotype...@gmail.com Signed-off-by: Chad Versace chad.vers...@linux.intel.com --- src/mesa/drivers/dri/intel/intel_screen.c | 129 ++--- 1 files changed, 63 insertions(+), 66 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index 41d4726..31497bc 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -549,83 +549,80 @@ intelCreateBuffer(__DRIscreen * driScrnPriv, { struct intel_renderbuffer *rb; struct intel_screen *screen = (struct intel_screen*) driScrnPriv-driverPrivate; + gl_format rgbFormat; + struct gl_framebuffer *fb; - if (isPixmap) { - return false; /* not implemented */ - } - else { - gl_format rgbFormat; + if (isPixmap) + return false; - struct gl_framebuffer *fb = CALLOC_STRUCT(gl_framebuffer); + fb = CALLOC_STRUCT(gl_framebuffer); + if (!fb) + return false; - if (!fb) -return false; + _mesa_initialize_window_framebuffer(fb, mesaVis); - _mesa_initialize_window_framebuffer(fb, mesaVis); + if (mesaVis-redBits == 5) + rgbFormat = MESA_FORMAT_RGB565; + else if (mesaVis-alphaBits == 0) + rgbFormat = MESA_FORMAT_XRGB; + else + rgbFormat = MESA_FORMAT_ARGB; - if (mesaVis-redBits == 5) -rgbFormat = MESA_FORMAT_RGB565; - else if (mesaVis-alphaBits == 0) -rgbFormat = MESA_FORMAT_XRGB; - else -rgbFormat = MESA_FORMAT_ARGB; + /* setup the hardware-based renderbuffers */ + rb = intel_create_renderbuffer(rgbFormat); + _mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, rb-Base.Base); - /* setup the hardware-based renderbuffers */ + if (mesaVis-doubleBufferMode) { rb = intel_create_renderbuffer(rgbFormat); - _mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, rb-Base.Base); - - if (mesaVis-doubleBufferMode) { -rb = intel_create_renderbuffer(rgbFormat); - _mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, rb-Base.Base); - } + _mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, rb-Base.Base); + } - /* - * Assert here that the gl_config has an expected depth/stencil bit - * combination: one of d24/s8, d16/s0, d0/s0. (See intelInitScreen2(), - * which constructs the advertised configs.) - */ - if (mesaVis-depthBits == 24) { -assert(mesaVis-stencilBits == 8); - -if (screen-hw_has_separate_stencil) { - rb = intel_create_private_renderbuffer(MESA_FORMAT_X8_Z24); - _mesa_add_renderbuffer(fb, BUFFER_DEPTH, rb-Base.Base); - rb = intel_create_private_renderbuffer(MESA_FORMAT_S8); - _mesa_add_renderbuffer(fb, BUFFER_STENCIL, rb-Base.Base); -} else { - /* -* Use combined depth/stencil. Note that the renderbuffer is -* attached to two attachment points. -*/ -rb = intel_create_private_renderbuffer(MESA_FORMAT_S8_Z24); - _mesa_add_renderbuffer(fb, BUFFER_DEPTH, rb-Base.Base); - _mesa_add_renderbuffer(fb, BUFFER_STENCIL, rb-Base.Base); -} - } - else if (mesaVis-depthBits == 16) { -assert(mesaVis-stencilBits == 0); - /* just 16-bit depth buffer, no hw stencil */ - struct intel_renderbuffer *depthRb - = intel_create_private_renderbuffer(MESA_FORMAT_Z16); - _mesa_add_renderbuffer(fb, BUFFER_DEPTH, depthRb-Base.Base); - } - else { -assert(mesaVis-depthBits == 0); -assert(mesaVis-stencilBits == 0); + /* +* Assert here that the gl_config has an expected depth/stencil bit +* combination: one of d24/s8, d16/s0, d0/s0. (See intelInitScreen2(), +* which constructs the advertised configs.) +*/ + if (mesaVis-depthBits == 24) { + assert(mesaVis-stencilBits == 8); + + if (screen-hw_has_separate_stencil) { + rb = intel_create_private_renderbuffer(MESA_FORMAT_X8_Z24); + _mesa_add_renderbuffer(fb, BUFFER_DEPTH, rb-Base.Base); + rb = intel_create_private_renderbuffer(MESA_FORMAT_S8); + _mesa_add_renderbuffer(fb, BUFFER_STENCIL, rb-Base.Base); + } else { + /* + * Use combined depth/stencil. Note that the renderbuffer is + * attached to two attachment points. + */ + rb =
Mesa (master): intel: Use consistent pattern in intelCreateBuffer
Module: Mesa Branch: master Commit: 8c94f6bbd80908fd2cae8e27fe78c429e54a78b8 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c94f6bbd80908fd2cae8e27fe78c429e54a78b8 Author: Chad Versace chad.vers...@linux.intel.com Date: Mon Jul 9 17:01:29 2012 -0700 intel: Use consistent pattern in intelCreateBuffer The 16-bit depth case did not follow the function's prevalent pattern. Reviewed-by: Paul Berry stereotype...@gmail.com Signed-off-by: Chad Versace chad.vers...@linux.intel.com --- src/mesa/drivers/dri/intel/intel_screen.c |6 ++ 1 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index 31497bc..90f1778 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -602,10 +602,8 @@ intelCreateBuffer(__DRIscreen * driScrnPriv, } else if (mesaVis-depthBits == 16) { assert(mesaVis-stencilBits == 0); - /* just 16-bit depth buffer, no hw stencil */ - struct intel_renderbuffer *depthRb - = intel_create_private_renderbuffer(MESA_FORMAT_Z16); - _mesa_add_renderbuffer(fb, BUFFER_DEPTH, depthRb-Base.Base); + rb = intel_create_private_renderbuffer(MESA_FORMAT_Z16); + _mesa_add_renderbuffer(fb, BUFFER_DEPTH, rb-Base.Base); } else { assert(mesaVis-depthBits == 0); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glsl: Add support for OES_standard_derivatives in GLSL ES.
Module: Mesa Branch: master Commit: d5c918f6adb2f7f72a759607c8f76e7616656c13 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d5c918f6adb2f7f72a759607c8f76e7616656c13 Author: Tomeu Vizoso to...@tomeuvizoso.net Date: Mon Jul 16 20:45:17 2012 +0200 glsl: Add support for OES_standard_derivatives in GLSL ES. Previously, we advertised the extension but the builtin functions were enabled only for GLSL and not for ES. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=52003 Signed-off-by: Tomeu Vizoso tomeu.viz...@collabora.com Reviewed-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org --- .../profiles/OES_standard_derivatives.frag | 20 src/glsl/glsl_parser_extras.cpp|1 + src/glsl/glsl_parser_extras.h |2 ++ 3 files changed, 23 insertions(+), 0 deletions(-) diff --git a/src/glsl/builtins/profiles/OES_standard_derivatives.frag b/src/glsl/builtins/profiles/OES_standard_derivatives.frag new file mode 100644 index 000..2c6ea07 --- /dev/null +++ b/src/glsl/builtins/profiles/OES_standard_derivatives.frag @@ -0,0 +1,20 @@ +#version 100 +#extension GL_OES_standard_derivatives : enable + +/* + * 8.8 - Fragment Processing Functions + */ +float dFdx(float p); +vec2 dFdx(vec2 p); +vec3 dFdx(vec3 p); +vec4 dFdx(vec4 p); + +float dFdy(float p); +vec2 dFdy(vec2 p); +vec3 dFdy(vec3 p); +vec4 dFdy(vec4 p); + +float fwidth(float p); +vec2 fwidth(vec2 p); +vec3 fwidth(vec3 p); +vec4 fwidth(vec4 p); diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp index 09e1e59..872fcda 100644 --- a/src/glsl/glsl_parser_extras.cpp +++ b/src/glsl/glsl_parser_extras.cpp @@ -288,6 +288,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = { EXT(OES_EGL_image_external, true, false, true, false, true, OES_EGL_image_external), EXT(ARB_shader_bit_encoding,true, true, true, true, false, ARB_shader_bit_encoding), EXT(ARB_uniform_buffer_object, true, false, true, true, false, ARB_uniform_buffer_object), + EXT(OES_standard_derivatives, false, false, true, false, true, OES_standard_derivatives), }; #undef EXT diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h index c0a96c7..66463c5 100644 --- a/src/glsl/glsl_parser_extras.h +++ b/src/glsl/glsl_parser_extras.h @@ -203,6 +203,8 @@ struct _mesa_glsl_parse_state { bool ARB_shader_bit_encoding_warn; bool ARB_uniform_buffer_object_enable; bool ARB_uniform_buffer_object_warn; + bool OES_standard_derivatives_enable; + bool OES_standard_derivatives_warn; /*@}*/ /** Extensions supported by the OpenGL implementation. */ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i965/msaa: Treat GL_SAMPLES=1 as equivalent to GL_SAMPLES=0.
Module: Mesa Branch: master Commit: 97fc89c6cbaa3b5ef7f678d2dc2c7d5bbba05315 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=97fc89c6cbaa3b5ef7f678d2dc2c7d5bbba05315 Author: Paul Berry stereotype...@gmail.com Date: Thu Jul 26 18:01:28 2012 -0700 i965/msaa: Treat GL_SAMPLES=1 as equivalent to GL_SAMPLES=0. EXT_framebuffer_multisample is a required subpart of ARB_framebuffer_object, which means that we must support it even on platforms that don't support MSAA. Fortunately EXT_framebuffer_multisample allows for this by allowing GL_MAX_SAMPLES to be set to 1. This leads to a tricky quirk in the GL spec: since GlRenderbufferStorageMultisamples() accepts any value for its samples parameter up to and including GL_MAX_SAMPLES, that means that on platforms that don't support MSAA, GL_SAMPLES is allowed to be set to either 0 or 1. On platforms that do support MSAA, GL_SAMPLES=1 is not used; 0 means no MSAA, and 2 or higher means MSAA. In other words, GL_SAMPLES needs to be interpreted as follows: =0 no MSAA (possible on all platforms) =1 no MSAA (only possible on platforms where MSAA unsupported) 1 MSAA (only possible on platforms where MSAA supported) This patch modifies all MSAA-related code to choose between multisampling and single-sampling based on the condition (GL_SAMPLES 1) instead of (GL_SAMPLES 0) so that GL_SAMPLES=1 will be treated as no MSAA. Note that since GL_SAMPLES=1 implies GL_SAMPLE_BUFFERS=1, we can no longer use GL_SAMPLE_BUFFERS to distinguish between MSAA and non-MSAA rendering. Reviewed-by: Jordan Justen jordan.l.jus...@intel.com Reviewed-by: Ian Romanick ian.d.roman...@intel.com --- src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 10 +- src/mesa/drivers/dri/i965/brw_wm_surface_state.c |4 ++-- src/mesa/drivers/dri/i965/gen6_blorp.cpp |6 +++--- src/mesa/drivers/dri/i965/gen6_multisample_state.c |3 ++- src/mesa/drivers/dri/i965/gen6_sf_state.c |2 +- src/mesa/drivers/dri/i965/gen6_wm_state.c |2 +- src/mesa/drivers/dri/i965/gen7_blorp.cpp |4 ++-- src/mesa/drivers/dri/i965/gen7_sf_state.c |2 +- src/mesa/drivers/dri/i965/gen7_wm_state.c |2 +- src/mesa/drivers/dri/i965/gen7_wm_surface_state.c |4 ++-- src/mesa/drivers/dri/intel/intel_mipmap_tree.c |6 +++--- 11 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp index 296b99f..1206237 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp +++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp @@ -1582,7 +1582,7 @@ inline intel_msaa_layout compute_msaa_layout_for_pipeline(struct brw_context *brw, unsigned num_samples, intel_msaa_layout true_layout) { - if (num_samples == 0) { + if (num_samples = 1) { /* When configuring the GPU for non-MSAA, we can still accommodate IMS * format buffers, by transforming coordinates appropriately. */ @@ -1652,7 +1652,7 @@ brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw, dst.num_samples = 0; } - if (dst.map_stencil_as_y_tiled dst.num_samples 0) { + if (dst.map_stencil_as_y_tiled dst.num_samples 1) { /* If the destination surface is a W-tiled multisampled stencil buffer * that we're mapping as Y tiled, then we need to arrange for the WM * program to run once per sample rather than once per pixel, because @@ -1662,7 +1662,7 @@ brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw, wm_prog_key.persample_msaa_dispatch = true; } - if (src.num_samples 0 dst.num_samples 0) { + if (src.num_samples 0 dst.num_samples 1) { /* We are blitting from a multisample buffer to a multisample buffer, so * we must preserve samples within a pixel. This means we have to * arrange for the WM program to run once per sample rather than once @@ -1679,7 +1679,7 @@ brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw, GLenum base_format = _mesa_get_format_base_format(src_mt-format); if (base_format != GL_DEPTH_COMPONENT /* TODO: what about depth/stencil? */ base_format != GL_STENCIL_INDEX - src_mt-num_samples 0 dst_mt-num_samples == 0) { + src_mt-num_samples 1 dst_mt-num_samples = 1) { /* We are downsampling a color buffer, so blend. */ wm_prog_key.blend = true; } @@ -1717,7 +1717,7 @@ brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw, wm_push_consts.x_transform.setup(src_x0, dst_x0, dst_x1, mirror_x); wm_push_consts.y_transform.setup(src_y0, dst_y0, dst_y1, mirror_y); - if (dst.num_samples == 0 dst_mt-num_samples 0) { + if (dst.num_samples = 1 dst_mt-num_samples 1) { /* We must expand the rectangle we send through the rendering pipeline, * to account for the fact that we
Mesa (master): i965/msaa: Allow GL_SAMPLES to be set to 1 prior to Gen6.
Module: Mesa Branch: master Commit: c18806cebf107d03751b11cc8866062c3822a56f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c18806cebf107d03751b11cc8866062c3822a56f Author: Paul Berry stereotype...@gmail.com Date: Thu Jul 26 18:02:20 2012 -0700 i965/msaa: Allow GL_SAMPLES to be set to 1 prior to Gen6. This patch allows GL_SAMPLES to be set to either 0 or 1 on i965 platforms that don't support MSAA (those prior to Gen6). Setting GL_SAMPLES=1 has the same effect as setting it to 0 on these platforms (because MSAA is unsupported), but is distinguishable via the GL API. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50165 Reviewed-by: Jordan Justen jordan.l.jus...@intel.com Reviewed-by: Ian Romanick ian.d.roman...@intel.com --- src/mesa/drivers/dri/intel/intel_fbo.c | 10 +- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index a53985b..613287f 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -202,7 +202,15 @@ quantize_num_samples(struct intel_context *intel, unsigned num_samples) return 0; return 0; default: - /* MSAA unsupported */ + /* MSAA unsupported. However, a careful reading of + * EXT_framebuffer_multisample reveals that we need to permit + * num_samples to be 1 (since num_samples is permitted to be as high as + * GL_MAX_SAMPLES, and GL_MAX_SAMPLES must be at least 1). Since + * platforms before Gen6 don't support MSAA, this is safe, because + * multisampling won't happen anyhow. + */ + if (num_samples 0) + return 1; return 0; } } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa: Move DepthMode to texture object
Module: Mesa Branch: master Commit: c37efbfe4c415b6fd2d4f968220d7c9b62f11ecf URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c37efbfe4c415b6fd2d4f968220d7c9b62f11ecf Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:38:46 2012 +0300 mesa: Move DepthMode to texture object GL_DEPTH_TEXTURE_MODE isn't meant to be part of sampler state based on compatibility profile specifications. OpenGL specification 4.1 compatibility 20100725 3.9.2: ... The values accepted in the pname parameter are TEXTURE_WRAP_S, TEXTURE_WRAP_T, TEXTURE_WRAP_R, TEXTURE_MIN_- FILTER, TEXTURE_MAG_FILTER, TEXTURE_BORDER_COLOR, TEXTURE_MIN_- LOD, TEXTURE_MAX_LOD, TEXTURE_LOD_BIAS, TEXTURE_COMPARE_MODE, and TEXTURE_COMPARE_FUNC. Texture state listed in table 6.25 but not listed here and in the sampler state in table 6.26 is not part of the sampler state, and remains in the texture object. The list of states is in Table 6.24 Textures (state per texture object) instead of 6.25 mentioned in the specification text. Same can be found from 3.3 compatibility specification. Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com Reviewed-by: Eric Anholt e...@anholt.net --- src/mesa/drivers/dri/i915/i915_texstate.c |2 +- src/mesa/drivers/dri/i965/brw_wm.c|2 +- src/mesa/drivers/dri/i965/brw_wm_surface_state.c |2 +- src/mesa/drivers/dri/i965/gen7_wm_surface_state.c |2 +- src/mesa/main/attrib.c|2 +- src/mesa/main/mtypes.h|5 ++--- src/mesa/main/samplerobj.c|2 -- src/mesa/main/texobj.c|4 ++-- src/mesa/main/texparam.c |8 src/mesa/main/texstate.c |2 +- src/mesa/state_tracker/st_atom_texture.c |4 ++-- src/mesa/swrast/s_texfilter.c |4 ++-- 12 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/mesa/drivers/dri/i915/i915_texstate.c b/src/mesa/drivers/dri/i915/i915_texstate.c index 9e6d3b1..4bd5e72 100644 --- a/src/mesa/drivers/dri/i915/i915_texstate.c +++ b/src/mesa/drivers/dri/i915/i915_texstate.c @@ -168,7 +168,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) i915-state.tex_offset[unit] = intelObj-mt-offset; format = translate_texture_format(firstImage-TexFormat, -sampler-DepthMode); +tObj-DepthMode); pitch = intelObj-mt-region-pitch * intelObj-mt-cpp; state[I915_TEXREG_MS3] = diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index 37bc114..5ab0547 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -374,7 +374,7 @@ brw_populate_sampler_prog_key_data(struct gl_context *ctx, * format overrides because shadow comparison always returns the * result of the comparison in all channels anyway. */ - switch (sampler-DepthMode) { + switch (t-DepthMode) { case GL_ALPHA: swizzles[0] = SWIZZLE_ZERO; swizzles[1] = SWIZZLE_ZERO; diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 3664462..66db08f 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -732,7 +732,7 @@ brw_update_texture_surface( struct gl_context *ctx, GLuint unit ) BRW_SURFACE_CUBEFACE_ENABLES | (translate_tex_format(mt-format, firstImage-InternalFormat, - sampler-DepthMode, + tObj-DepthMode, sampler-sRGBDecode) BRW_SURFACE_FORMAT_SHIFT)); diff --git a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c index 20e76e3..5b016dc 100644 --- a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c @@ -296,7 +296,7 @@ gen7_update_texture_surface(struct gl_context *ctx, GLuint unit) surf-ss0.surface_type = translate_tex_target(tObj-Target); surf-ss0.surface_format = translate_tex_format(mt-format, firstImage-InternalFormat, - sampler-DepthMode, + tObj-DepthMode, sampler-sRGBDecode); if (tObj-Target == GL_TEXTURE_CUBE_MAP) { surf-ss0.cube_pos_x = 1; diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c index 318d576..8bc7c34 100644 --- a/src/mesa/main/attrib.c +++ b/src/mesa/main/attrib.c @@
Mesa (master): mesa/samplerobj: Support EXT_texture_sRGB_decode
Module: Mesa Branch: master Commit: 765509903b3c560f9c19169d736f284480e88942 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=765509903b3c560f9c19169d736f284480e88942 Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:38:47 2012 +0300 mesa/samplerobj: Support EXT_texture_sRGB_decode sRGBDecode state is part of sampler object state but mesa was missing handlers to access the state. This patch adds the support for required state changes and queries. GL_EXT_texture_sRGB_decode issue 4: 4) Should we add forward-looking support for ARB_sampler_objects? RESOLVED: YES If ARB_sampler_objects exists in the implementation, the sampler objects should also include this parameter per sampler. Fixes piglit GL_ARB_sampler_objects/GL_EXT_texture_sRGB_decode. Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com Reviewed-by: Eric Anholt e...@anholt.net --- src/mesa/main/samplerobj.c | 55 1 files changed, 55 insertions(+), 0 deletions(-) diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c index 8c54c9a..5bb90cf 100644 --- a/src/mesa/main/samplerobj.c +++ b/src/mesa/main/samplerobj.c @@ -582,6 +582,23 @@ set_sampler_cube_map_seamless(struct gl_context *ctx, return GL_TRUE; } +static GLuint +set_sampler_srgb_decode(struct gl_context *ctx, + struct gl_sampler_object *samp, GLenum param) +{ + if (!ctx-Extensions.EXT_texture_sRGB_decode) + return INVALID_PNAME; + + if (samp-sRGBDecode == param) + return GL_FALSE; + + if (param != GL_DECODE_EXT param != GL_SKIP_DECODE_EXT) + return INVALID_VALUE; + + flush(ctx); + samp-sRGBDecode = param; + return GL_TRUE; +} static void GLAPIENTRY _mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param) @@ -634,6 +651,9 @@ _mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param) case GL_TEXTURE_CUBE_MAP_SEAMLESS: res = set_sampler_cube_map_seamless(ctx, sampObj, param); break; + case GL_TEXTURE_SRGB_DECODE_EXT: + res = set_sampler_srgb_decode(ctx, sampObj, param); + break; case GL_TEXTURE_BORDER_COLOR: /* fall-through */ default: @@ -718,6 +738,9 @@ _mesa_SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) case GL_TEXTURE_CUBE_MAP_SEAMLESS: res = set_sampler_cube_map_seamless(ctx, sampObj, (GLboolean) param); break; + case GL_TEXTURE_SRGB_DECODE_EXT: + res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) param); + break; case GL_TEXTURE_BORDER_COLOR: /* fall-through */ default: @@ -799,6 +822,9 @@ _mesa_SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *params) case GL_TEXTURE_CUBE_MAP_SEAMLESS: res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]); break; + case GL_TEXTURE_SRGB_DECODE_EXT: + res = set_sampler_srgb_decode(ctx, sampObj, params[0]); + break; case GL_TEXTURE_BORDER_COLOR: { GLfloat c[4]; @@ -890,6 +916,9 @@ _mesa_SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *params) case GL_TEXTURE_CUBE_MAP_SEAMLESS: res = set_sampler_cube_map_seamless(ctx, sampObj, (GLboolean) params[0]); break; + case GL_TEXTURE_SRGB_DECODE_EXT: + res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) params[0]); + break; case GL_TEXTURE_BORDER_COLOR: res = set_sampler_border_colorf(ctx, sampObj, params); break; @@ -972,6 +1001,9 @@ _mesa_SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *params) case GL_TEXTURE_CUBE_MAP_SEAMLESS: res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]); break; + case GL_TEXTURE_SRGB_DECODE_EXT: + res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) params[0]); + break; case GL_TEXTURE_BORDER_COLOR: res = set_sampler_border_colori(ctx, sampObj, params); break; @@ -1055,6 +1087,9 @@ _mesa_SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *params) case GL_TEXTURE_CUBE_MAP_SEAMLESS: res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]); break; + case GL_TEXTURE_SRGB_DECODE_EXT: + res = set_sampler_srgb_decode(ctx, sampObj, (GLenum) params[0]); + break; case GL_TEXTURE_BORDER_COLOR: res = set_sampler_border_colorui(ctx, sampObj, params); break; @@ -1149,6 +1184,11 @@ _mesa_GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) goto invalid_pname; *params = sampObj-CubeMapSeamless; break; + case GL_TEXTURE_SRGB_DECODE_EXT: + if (!ctx-Extensions.EXT_texture_sRGB_decode) + goto invalid_pname; + *params = (GLenum) sampObj-sRGBDecode; + break; default: goto invalid_pname; } @@ -1222,6 +1262,11 @@ _mesa_GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params)
Mesa (master): nouveau: Add support for ARB_sampler_objects
Module: Mesa Branch: master Commit: 54808e560f773f652919a2865c7371e4715df510 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=54808e560f773f652919a2865c7371e4715df510 Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:38:50 2012 +0300 nouveau: Add support for ARB_sampler_objects ARB_sampler_objects is very simple software only extension to support. I want to make it a mandatory extension for Mesa drivers to allow the meta module to use it. This patch add support for the extension to nouveau. It is completely untested search and replace patch, except for flagging the texture state as needing to be recomputed when a sampler object is present. Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com --- src/mesa/drivers/dri/nouveau/nouveau_state.c |7 +++ src/mesa/drivers/dri/nouveau/nv04_state_tex.c | 22 -- src/mesa/drivers/dri/nouveau/nv10_state_tex.c | 23 +-- src/mesa/drivers/dri/nouveau/nv20_state_tex.c | 25 ++--- 4 files changed, 46 insertions(+), 31 deletions(-) diff --git a/src/mesa/drivers/dri/nouveau/nouveau_state.c b/src/mesa/drivers/dri/nouveau/nouveau_state.c index 1579d29..5155da9 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_state.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_state.c @@ -495,6 +495,13 @@ nouveau_update_state(struct gl_context *ctx, GLbitfield new_state) context_dirty(ctx, MATERIAL_BACK_SHININESS); } + if (new_state _NEW_TEXTURE) { + for (i = 0; i ctx-Const.MaxTextureUnits; i++) { + if (ctx-Texture.Unit[i].Sampler) + context_dirty_i(ctx, TEX_OBJ, i); + } + } + _swrast_InvalidateState(ctx, new_state); _tnl_InvalidateState(ctx, new_state); diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c index 807e2f3..e4d695a 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c @@ -32,6 +32,7 @@ #include nv_object.xml.h #include nv04_3d.xml.h #include nv04_driver.h +#include main/samplerobj.h static uint32_t get_tex_format(struct gl_texture_image *ti) @@ -67,6 +68,7 @@ nv04_emit_tex_obj(struct gl_context *ctx, int emit) if (ctx-Texture.Unit[i]._ReallyEnabled) { struct gl_texture_object *t = ctx-Texture.Unit[i]._Current; struct gl_texture_image *ti = t-Image[0][t-BaseLevel]; + const struct gl_sampler_object *sa = _mesa_get_samplerobj(ctx, i); int lod_max = 1, lod_bias = 0; if (!nouveau_texture_validate(ctx, t)) @@ -74,26 +76,26 @@ nv04_emit_tex_obj(struct gl_context *ctx, int emit) s = to_nouveau_texture(t)-surfaces[t-BaseLevel]; - if (t-Sampler.MinFilter != GL_NEAREST - t-Sampler.MinFilter != GL_LINEAR) { - lod_max = CLAMP(MIN2(t-Sampler.MaxLod, t-_MaxLambda), + if (sa-MinFilter != GL_NEAREST + sa-MinFilter != GL_LINEAR) { + lod_max = CLAMP(MIN2(sa-MaxLod, t-_MaxLambda), 0, 15) + 1; lod_bias = CLAMP(ctx-Texture.Unit[i].LodBias + -t-Sampler.LodBias, -16, 15) * 8; +sa-LodBias, -16, 15) * 8; } - format |= nvgl_wrap_mode(t-Sampler.WrapT) 28 | - nvgl_wrap_mode(t-Sampler.WrapS) 24 | + format |= nvgl_wrap_mode(sa-WrapT) 28 | + nvgl_wrap_mode(sa-WrapS) 24 | ti-HeightLog2 20 | ti-WidthLog2 16 | lod_max 12 | get_tex_format(ti); - filter |= log2i(t-Sampler.MaxAnisotropy) 31 | - nvgl_filter_mode(t-Sampler.MagFilter) 28 | - log2i(t-Sampler.MaxAnisotropy) 27 | - nvgl_filter_mode(t-Sampler.MinFilter) 24 | + filter |= log2i(sa-MaxAnisotropy) 31 | + nvgl_filter_mode(sa-MagFilter) 28 | + log2i(sa-MaxAnisotropy) 27 | + nvgl_filter_mode(sa-MinFilter) 24 | (lod_bias 0xff) 16; } else { diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c index b467bb3..3b76d66 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c @@ -31,6 +31,7 @@ #include nv10_3d.xml.h #include nouveau_util.h #include nv10_driver.h +#include main/samplerobj.h void nv10_emit_tex_gen(struct gl_context *ctx, int emit) @@ -159,6 +160,7 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
Mesa (master): radeon: Fix printf format not to warn in 64bit
Module: Mesa Branch: master Commit: 10169e7adc40b445776453fcc6d3227d7dda5879 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=10169e7adc40b445776453fcc6d3227d7dda5879 Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:38:51 2012 +0300 radeon: Fix printf format not to warn in 64bit When I build tested radeon changes I noticed two warnings about format size missmatch in 64bit. I decided to clean them to make relevant compiler warnings easier to spot. Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com --- src/mesa/drivers/dri/radeon/radeon_blit.c |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_blit.c b/src/mesa/drivers/dri/radeon/radeon_blit.c index b4932a2..2d4a2d6 100644 --- a/src/mesa/drivers/dri/radeon/radeon_blit.c +++ b/src/mesa/drivers/dri/radeon/radeon_blit.c @@ -390,13 +390,13 @@ unsigned r100_blit(struct gl_context *ctx, } if (0) { -fprintf(stderr, src: size [%d x %d], pitch %d, offset %d +fprintf(stderr, src: size [%d x %d], pitch %d, offset %zd offset [%d x %d], format %s, bo %p\n, src_width, src_height, src_pitch, src_offset, src_x_offset, src_y_offset, _mesa_get_format_name(src_mesaformat), src_bo); -fprintf(stderr, dst: pitch %d offset %d, offset[%d x %d], format %s, bo %p\n, +fprintf(stderr, dst: pitch %d offset %zd, offset[%d x %d], format %s, bo %p\n, dst_pitch, dst_offset, dst_x_offset, dst_y_offset, _mesa_get_format_name(dst_mesaformat), dst_bo); fprintf(stderr, region: %d x %d\n, reg_width, reg_height); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeonr200: Add support for ARB_sampler_objects
Module: Mesa Branch: master Commit: 6f6bd8aedcf2b2f0e1ca9a1fa7ded1cb1f5a88ed URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6f6bd8aedcf2b2f0e1ca9a1fa7ded1cb1f5a88ed Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:38:52 2012 +0300 radeonr200: Add support for ARB_sampler_objects Preparation for the mandatory support of ARB_sampler_objects. I have tested this patch with rv280 only. Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com --- src/mesa/drivers/dri/r200/r200_tex.c | 33 -- src/mesa/drivers/dri/r200/r200_tex.h |1 + src/mesa/drivers/dri/r200/r200_texstate.c|3 +- src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c | 16 + src/mesa/drivers/dri/radeon/radeon_span.c|4 ++- src/mesa/drivers/dri/radeon/radeon_tex.c | 38 - src/mesa/drivers/dri/radeon/radeon_tex.h |1 + src/mesa/drivers/dri/radeon/radeon_tex_copy.c|2 +- src/mesa/drivers/dri/radeon/radeon_texstate.c|4 ++- src/mesa/drivers/dri/radeon/radeon_texture.h |4 ++- 10 files changed, 67 insertions(+), 39 deletions(-) diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c index fe7c977..9d52095 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.c +++ b/src/mesa/drivers/dri/r200/r200_tex.c @@ -41,6 +41,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include main/simple_list.h #include main/teximage.h #include main/texobj.h +#include main/samplerobj.h #include radeon_mipmap_tree.h #include r200_context.h @@ -360,12 +361,21 @@ static void r200TexEnv( struct gl_context *ctx, GLenum target, } } +void r200TexUpdateParameters(struct gl_context *ctx, GLuint unit) +{ + struct gl_sampler_object *samp = _mesa_get_samplerobj(ctx, unit); + radeonTexObj* t = radeon_tex_obj(ctx-Texture.Unit[unit]._Current); + + r200SetTexMaxAnisotropy(t , samp-MaxAnisotropy); + r200SetTexFilter(t, samp-MinFilter, samp-MagFilter); + r200SetTexWrap(t, samp-WrapS, samp-WrapT, samp-WrapR); + r200SetTexBorderColor(t, samp-BorderColor.f); +} /** * Changes variables and flags for a state update, which will happen at the * next UpdateTextureState */ - static void r200TexParameter( struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, GLenum pname, const GLfloat *params ) @@ -382,20 +392,10 @@ static void r200TexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - r200SetTexMaxAnisotropy( t, texObj-Sampler.MaxAnisotropy ); - r200SetTexFilter( t, texObj-Sampler.MinFilter, texObj-Sampler.MagFilter ); - break; - case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: case GL_TEXTURE_WRAP_R: - r200SetTexWrap( t, texObj-Sampler.WrapS, texObj-Sampler.WrapT, texObj-Sampler.WrapR ); - break; - case GL_TEXTURE_BORDER_COLOR: - r200SetTexBorderColor( t, texObj-Sampler.BorderColor.f ); - break; - case GL_TEXTURE_BASE_LEVEL: case GL_TEXTURE_MAX_LEVEL: case GL_TEXTURE_MIN_LOD: @@ -489,6 +489,16 @@ static struct gl_texture_object *r200NewTextureObject(struct gl_context * ctx, return t-base; } +static struct gl_sampler_object * +r200NewSamplerObject(struct gl_context *ctx, GLuint name) +{ + r200ContextPtr rmesa = R200_CONTEXT(ctx); + struct gl_sampler_object *samp = _mesa_new_sampler_object(ctx, name); + if (samp) + samp-MaxAnisotropy = rmesa-radeon.initialMaxAnisotropy; + return samp; +} + void r200InitTextureFuncs( radeonContextPtr radeon, struct dd_function_table *functions ) @@ -506,4 +516,5 @@ void r200InitTextureFuncs( radeonContextPtr radeon, struct dd_function_table *fu functions-TexEnv = r200TexEnv; functions-TexParameter = r200TexParameter; functions-TexGen = r200TexGen; + functions-NewSamplerObject = r200NewSamplerObject; } diff --git a/src/mesa/drivers/dri/r200/r200_tex.h b/src/mesa/drivers/dri/r200/r200_tex.h index 756a128..725b45d 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.h +++ b/src/mesa/drivers/dri/r200/r200_tex.h @@ -48,6 +48,7 @@ extern void r200DestroyTexObj( r200ContextPtr rmesa, radeonTexObjPtr t ); extern void r200InitTextureFuncs( radeonContextPtr radeon, struct dd_function_table *functions ); extern void r200UpdateFragmentShader( struct gl_context *ctx ); +extern void r200TexUpdateParameters(struct gl_context *ctx, GLuint unit); extern void set_re_cntl_d3d( struct gl_context *ctx, int unit, GLboolean use_d3d ); diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c b/src/mesa/drivers/dri/r200/r200_texstate.c index 19e77c5..b25c611 100644 --- a/src/mesa/drivers/dri/r200/r200_texstate.c +++
Mesa (master): mesa/ff_shader: Fix sampler state reading
Module: Mesa Branch: master Commit: cae76368523b2dd25f26069b9872a8993384fa57 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cae76368523b2dd25f26069b9872a8993384fa57 Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:38:53 2012 +0300 mesa/ff_shader: Fix sampler state reading Fixed function fragment shader generator was incorrectly read texture sampling state directly from texture object. To make sure that ARB_sampler_object works correctly shader generator has to use the bound sampler if one exist. Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com Reviewed-by: Eric Anholt e...@anholt.net --- src/mesa/main/ff_fragment_shader.cpp |5 - 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/src/mesa/main/ff_fragment_shader.cpp b/src/mesa/main/ff_fragment_shader.cpp index 0233f38..f743ce1 100644 --- a/src/mesa/main/ff_fragment_shader.cpp +++ b/src/mesa/main/ff_fragment_shader.cpp @@ -33,6 +33,7 @@ extern C { #include mtypes.h #include main/uniforms.h #include main/macros.h +#include main/samplerobj.h #include program/program.h #include program/prog_parameter.h #include program/prog_cache.h @@ -428,11 +429,13 @@ static GLuint make_state_key( struct gl_context *ctx, struct state_key *key ) const struct gl_texture_unit *texUnit = ctx-Texture.Unit[i]; const struct gl_texture_object *texObj = texUnit-_Current; const struct gl_tex_env_combine_state *comb = texUnit-_CurrentCombine; + const struct gl_sampler_object *samp; GLenum format; if (!texUnit-_ReallyEnabled || !texUnit-Enabled) continue; + samp = _mesa_get_samplerobj(ctx, i); format = texObj-Image[0][texObj-BaseLevel]-_BaseFormat; key-unit[i].enabled = 1; @@ -444,7 +447,7 @@ static GLuint make_state_key( struct gl_context *ctx, struct state_key *key ) translate_tex_src_bit(texUnit-_ReallyEnabled); key-unit[i].shadow = - ((texObj-Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE) + ((samp-CompareMode == GL_COMPARE_R_TO_TEXTURE) ((format == GL_DEPTH_COMPONENT) || (format == GL_DEPTH_STENCIL_EXT))); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa/program: Use sampler object state if present
Module: Mesa Branch: master Commit: ae58f9696c5f82c98767b3f244b2ad4b966905e5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ae58f9696c5f82c98767b3f244b2ad4b966905e5 Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:38:54 2012 +0300 mesa/program: Use sampler object state if present CompareFailValue is part of Sampler state that needs to be read from bound sampler object if present. Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com Reviewed-by: Eric Anholt e...@anholt.net --- src/mesa/program/prog_statevars.c |5 - 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c index 3d13386..9121221 100644 --- a/src/mesa/program/prog_statevars.c +++ b/src/mesa/program/prog_statevars.c @@ -37,6 +37,7 @@ #include main/fbobject.h #include prog_statevars.h #include prog_parameter.h +#include main/samplerobj.h /** @@ -555,11 +556,13 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[], const int unit = (int) state[2]; const struct gl_texture_object *texObj = ctx-Texture.Unit[unit]._Current; +const struct gl_sampler_object *samp = + _mesa_get_samplerobj(ctx, unit); if (texObj) { value[0] = value[1] = value[2] = - value[3] = texObj-Sampler.CompareFailValue; + value[3] = samp-CompareFailValue; } } return; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa: Make ARB_sampler_objects mandatory
Module: Mesa Branch: master Commit: 8129dabb5f5ff717bb1ca32710ca6204d5345461 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8129dabb5f5ff717bb1ca32710ca6204d5345461 Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:38:55 2012 +0300 mesa: Make ARB_sampler_objects mandatory To allow meta acceleration operations to use sampler objects the ARB_sampler_objects extension needs to be mandatory for all drivers. Because the extension doesn't have any hardware dependencies it is trivial to implement. Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com Reviewed-by: Eric Anholt e...@anholt.net --- src/mesa/drivers/dri/intel/intel_extensions.c |1 - src/mesa/main/extensions.c|2 +- src/mesa/main/get.c |7 +-- src/mesa/main/mtypes.h|1 - src/mesa/main/version.c |2 +- src/mesa/state_tracker/st_extensions.c|1 - 6 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c index b752216..2d2245d 100755 --- a/src/mesa/drivers/dri/intel/intel_extensions.c +++ b/src/mesa/drivers/dri/intel/intel_extensions.c @@ -49,7 +49,6 @@ intelInitExtensions(struct gl_context *ctx) ctx-Extensions.ARB_half_float_pixel = true; ctx-Extensions.ARB_map_buffer_range = true; ctx-Extensions.ARB_point_sprite = true; - ctx-Extensions.ARB_sampler_objects = true; ctx-Extensions.ARB_shader_objects = true; ctx-Extensions.ARB_shading_language_100 = true; ctx-Extensions.ARB_sync = true; diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index a7b481c..5e13a93 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -113,7 +113,7 @@ static const struct extension extension_table[] = { { GL_ARB_point_sprite,o(ARB_point_sprite), GL, 2003 }, { GL_ARB_provoking_vertex,o(EXT_provoking_vertex), GL, 2009 }, { GL_ARB_robustness, o(dummy_true), GL, 2010 }, - { GL_ARB_sampler_objects, o(ARB_sampler_objects), GL, 2009 }, + { GL_ARB_sampler_objects, o(dummy_true), GL, 2009 }, { GL_ARB_seamless_cube_map, o(ARB_seamless_cube_map), GL, 2009 }, { GL_ARB_shader_bit_encoding, o(ARB_shader_bit_encoding), GL, 2010 }, { GL_ARB_shader_objects, o(ARB_shader_objects), GL, 2002 }, diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index b9c98fb..16ad2c4 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -284,11 +284,6 @@ static const int extra_GLSL_130[] = { EXTRA_END }; -static const int extra_ARB_sampler_objects[] = { - EXT(ARB_sampler_objects), - EXTRA_END -}; - static const int extra_ARB_uniform_buffer_object_and_geometry_shader[] = { EXT(ARB_uniform_buffer_object), EXT(ARB_geometry_shader4), @@ -1304,7 +1299,7 @@ static const struct value_desc values[] = { /* GL_ARB_sampler_objects / GL 3.3 */ { GL_SAMPLER_BINDING, - LOC_CUSTOM, TYPE_INT, GL_SAMPLER_BINDING, extra_ARB_sampler_objects }, + LOC_CUSTOM, TYPE_INT, GL_SAMPLER_BINDING, NO_EXTRA }, /* GL 3.0 */ { GL_NUM_EXTENSIONS, LOC_CUSTOM, TYPE_INT, 0, extra_version_30 }, diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 68e05a6..e8adac9 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -2965,7 +2965,6 @@ struct gl_extensions GLboolean ARB_occlusion_query; GLboolean ARB_occlusion_query2; GLboolean ARB_point_sprite; - GLboolean ARB_sampler_objects; GLboolean ARB_seamless_cube_map; GLboolean ARB_shader_bit_encoding; GLboolean ARB_shader_objects; diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c index 91ef2df..85e6231 100644 --- a/src/mesa/main/version.c +++ b/src/mesa/main/version.c @@ -170,12 +170,12 @@ compute_version(struct gl_context *ctx) ctx-Extensions.ARB_explicit_attrib_location ctx-Extensions.ARB_instanced_arrays ctx-Extensions.ARB_occlusion_query2 - ctx-Extensions.ARB_sampler_objects ctx-Extensions.ARB_shader_bit_encoding ctx-Extensions.ARB_texture_rgb10_a2ui ctx-Extensions.ARB_timer_query ctx-Extensions.ARB_vertex_type_2_10_10_10_rev
Mesa (master): swrast: Support sampler object for texture fetching state
Module: Mesa Branch: master Commit: cbdc1d53542b3ecca0085399c4bb3b3371f94809 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cbdc1d53542b3ecca0085399c4bb3b3371f94809 Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:38:56 2012 +0300 swrast: Support sampler object for texture fetching state swrast needs to pass sampler object into all texture fetching functions to use correct sampling state when sampler object is bound to the unit. The changes were made using half manual regular expression replace. v2: Fix NULL deref in _swrast_choose_triangle(), because the _Current values aren't set yet, so we need to look at our texObj2D. (anholt) Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com --- src/mesa/swrast/s_atifragshader.c |6 +- src/mesa/swrast/s_context.c |4 +- src/mesa/swrast/s_context.h |1 + src/mesa/swrast/s_fragprog.c | 17 +- src/mesa/swrast/s_span.c |8 +- src/mesa/swrast/s_texcombine.c| 42 ++- src/mesa/swrast/s_texfetch.c | 18 +- src/mesa/swrast/s_texfetch.h |2 +- src/mesa/swrast/s_texfilter.c | 692 - src/mesa/swrast/s_triangle.c | 16 +- src/mesa/tnl/t_vb_program.c |4 +- 11 files changed, 449 insertions(+), 361 deletions(-) Diff: http://cgit.freedesktop.org/mesa/mesa/diff/?id=cbdc1d53542b3ecca0085399c4bb3b3371f94809 ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa: Allow meta module to call sampler functions
Module: Mesa Branch: master Commit: 5a320d5bcfb66afca6fe9fe5da133c2675ab4d27 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a320d5bcfb66afca6fe9fe5da133c2675ab4d27 Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:38:57 2012 +0300 mesa: Allow meta module to call sampler functions To allow meta module to use sample objects mesa GL functions need to be visible and linkable for meta module. Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com Reviewed-by: Eric Anholt e...@anholt.net --- src/mesa/main/samplerobj.c |8 src/mesa/main/samplerobj.h | 11 +++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c index 5bb90cf..dc8adfc 100644 --- a/src/mesa/main/samplerobj.c +++ b/src/mesa/main/samplerobj.c @@ -160,7 +160,7 @@ _mesa_delete_sampler_object(struct gl_context *ctx, } -static void GLAPIENTRY +void GLAPIENTRY _mesa_GenSamplers(GLsizei count, GLuint *samplers) { GET_CURRENT_CONTEXT(ctx); @@ -192,7 +192,7 @@ _mesa_GenSamplers(GLsizei count, GLuint *samplers) } -static void GLAPIENTRY +void GLAPIENTRY _mesa_DeleteSamplers(GLsizei count, const GLuint *samplers) { GET_CURRENT_CONTEXT(ctx); @@ -242,7 +242,7 @@ _mesa_IsSampler(GLuint sampler) } -static void GLAPIENTRY +void GLAPIENTRY _mesa_BindSampler(GLuint unit, GLuint sampler) { struct gl_sampler_object *sampObj; @@ -600,7 +600,7 @@ set_sampler_srgb_decode(struct gl_context *ctx, return GL_TRUE; } -static void GLAPIENTRY +void GLAPIENTRY _mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param) { struct gl_sampler_object *sampObj; diff --git a/src/mesa/main/samplerobj.h b/src/mesa/main/samplerobj.h index 0bfda43..2b0cd79 100644 --- a/src/mesa/main/samplerobj.h +++ b/src/mesa/main/samplerobj.h @@ -77,5 +77,16 @@ _mesa_init_sampler_object_functions(struct dd_function_table *driver); extern void _mesa_init_sampler_object_dispatch(struct _glapi_table *disp); +extern void GLAPIENTRY +_mesa_BindSampler(GLuint unit, GLuint sampler); + +extern void GLAPIENTRY +_mesa_GenSamplers(GLsizei count, GLuint *samplers); + +extern void GLAPIENTRY +_mesa_DeleteSamplers(GLsizei count, const GLuint *samplers); + +extern void GLAPIENTRY +_mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param); #endif /* SAMPLEROBJ_H */ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): meta: Add sampler object to texture decompression
Module: Mesa Branch: master Commit: 676a563d5bdcd9c75e1e33d75e2fa16bedcf5e83 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=676a563d5bdcd9c75e1e33d75e2fa16bedcf5e83 Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:39:00 2012 +0300 meta: Add sampler object to texture decompression Sampler objects can be used to shadow texture object state without modifying original application state. Decompression path feels a bit like path where caching shouldn't happen. But as everything else is cached already I decided to cache sampler state too. Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com Reviewed-by: Eric Anholt e...@anholt.net --- src/mesa/drivers/common/meta.c | 44 +-- 1 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 6846bbc..13da1da 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -287,7 +287,7 @@ struct gen_mipmap_state struct decompress_state { GLuint ArrayObj; - GLuint VBO, FBO, RBO; + GLuint VBO, FBO, RBO, Sampler; GLint Width, Height; }; @@ -3295,6 +3295,7 @@ decompress_texture_image(struct gl_context *ctx, struct vertex verts[4]; GLuint fboDrawSave, fboReadSave; GLuint rbSave; + GLuint samplerSave; if (slice 0) { assert(target == GL_TEXTURE_3D || @@ -3315,6 +3316,9 @@ decompress_texture_image(struct gl_context *ctx, _mesa_meta_begin(ctx, MESA_META_ALL ~MESA_META_PIXEL_STORE); + samplerSave = ctx-Texture.Unit[ctx-Texture.CurrentUnit].Sampler ? + ctx-Texture.Unit[ctx-Texture.CurrentUnit].Sampler-Name : 0; + /* Create/bind FBO/renderbuffer */ if (decompress-FBO == 0) { _mesa_GenFramebuffersEXT(1, decompress-FBO); @@ -3362,6 +3366,22 @@ decompress_texture_image(struct gl_context *ctx, _mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB, decompress-VBO); } + if (!decompress-Sampler) { + _mesa_GenSamplers(1, decompress-Sampler); + _mesa_BindSampler(ctx-Texture.CurrentUnit, decompress-Sampler); + /* nearest filtering */ + _mesa_SamplerParameteri(decompress-Sampler, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + _mesa_SamplerParameteri(decompress-Sampler, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + /* No sRGB decode or encode.*/ + if (ctx-Extensions.EXT_texture_sRGB_decode) { + _mesa_SamplerParameteri(decompress-Sampler, GL_TEXTURE_SRGB_DECODE_EXT, + GL_SKIP_DECODE_EXT); + } + + } else { + _mesa_BindSampler(ctx-Texture.CurrentUnit, decompress-Sampler); + } + setup_texture_coords(faceTarget, slice, width, height, verts[0].tex, verts[1].tex, @@ -3387,26 +3407,14 @@ decompress_texture_image(struct gl_context *ctx, { /* save texture object state */ - const GLenum minFilterSave = texObj-Sampler.MinFilter; - const GLenum magFilterSave = texObj-Sampler.MagFilter; const GLint baseLevelSave = texObj-BaseLevel; const GLint maxLevelSave = texObj-MaxLevel; - const GLenum wrapSSave = texObj-Sampler.WrapS; - const GLenum wrapTSave = texObj-Sampler.WrapT; - const GLenum srgbSave = texObj-Sampler.sRGBDecode; /* restrict sampling to the texture level of interest */ _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, texImage-Level); _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, texImage-Level); - /* nearest filtering */ - _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); /* No sRGB decode or encode.*/ - if (ctx-Extensions.EXT_texture_sRGB_decode) { - _mesa_TexParameteri(target, GL_TEXTURE_SRGB_DECODE_EXT, - GL_SKIP_DECODE_EXT); - } if (ctx-Extensions.EXT_framebuffer_sRGB) { _mesa_set_enable(ctx, GL_FRAMEBUFFER_SRGB_EXT, GL_FALSE); } @@ -3417,17 +3425,11 @@ decompress_texture_image(struct gl_context *ctx, /* Restore texture object state, the texture binding will * be restored by _mesa_meta_end(). */ - _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, minFilterSave); - _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, magFilterSave); if (target != GL_TEXTURE_RECTANGLE_ARB) { _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, baseLevelSave); _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave); } - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, wrapSSave); - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, wrapTSave); - if (ctx-Extensions.EXT_texture_sRGB_decode) { - _mesa_TexParameteri(target, GL_TEXTURE_SRGB_DECODE_EXT, srgbSave); - } + } /* read pixels from renderbuffer */ @@ -3455,6 +3457,8 @@
Mesa (master): meta: Use sampler object in framebuffer blit
Module: Mesa Branch: master Commit: 204bfb904bd5d4dd9ce90fe4d3e8e48b0d01fdae URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=204bfb904bd5d4dd9ce90fe4d3e8e48b0d01fdae Author: Pauli Nieminen pauli.niemi...@linux.intel.com Date: Tue Jun 12 21:39:01 2012 +0300 meta: Use sampler object in framebuffer blit Framebuffer blit needs to setup texture sampling with no reference to the user's texturing state, and a sampler object lets us avoid a bunch of changes to the user's state setup. We don't bother caching the sampler object since we're changing parameters in it based on the filtering option to glBlitFramebuffer(). Fixes piglit GL_ARB_sampler_objects/framebufferblit and rendering in l4d2 (our setting of srgb decode wasn't being respected due to the user's sampler object being active). Signed-off-by: Pauli Nieminen pauli.niemi...@linux.intel.com Reviewed-by: Brian Paul bri...@vmware.com Reviewed-by: Eric Anholt e...@anholt.net --- src/mesa/drivers/common/meta.c | 31 ++- 1 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 13da1da..af89d81 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -1350,15 +1350,13 @@ blitframebuffer_texture(struct gl_context *ctx, if (readAtt readAtt-Texture) { const struct gl_texture_object *texObj = readAtt-Texture; const GLuint srcLevel = readAtt-TextureLevel; - const GLenum minFilterSave = texObj-Sampler.MinFilter; - const GLenum magFilterSave = texObj-Sampler.MagFilter; const GLint baseLevelSave = texObj-BaseLevel; const GLint maxLevelSave = texObj-MaxLevel; - const GLenum wrapSSave = texObj-Sampler.WrapS; - const GLenum wrapTSave = texObj-Sampler.WrapT; - const GLenum srgbSave = texObj-Sampler.sRGBDecode; const GLenum fbo_srgb_save = ctx-Color.sRGBEnabled; const GLenum target = texObj-Target; + GLuint sampler, samplerSave = +ctx-Texture.Unit[ctx-Texture.CurrentUnit].Sampler ? +ctx-Texture.Unit[ctx-Texture.CurrentUnit].Sampler-Name : 0; if (drawAtt-Texture == readAtt-Texture) { /* Can't use same texture as both the source and dest. We need @@ -1373,6 +1371,9 @@ blitframebuffer_texture(struct gl_context *ctx, return mask; } + _mesa_GenSamplers(1, sampler); + _mesa_BindSampler(ctx-Texture.CurrentUnit, sampler); + /* printf(Blit from texture!\n); printf( srcAtt %p dstAtt %p\n, readAtt, drawAtt); @@ -1381,18 +1382,18 @@ blitframebuffer_texture(struct gl_context *ctx, /* Prepare src texture state */ _mesa_BindTexture(target, texObj-Name); - _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, filter); - _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, filter); + _mesa_SamplerParameteri(sampler, GL_TEXTURE_MIN_FILTER, filter); + _mesa_SamplerParameteri(sampler, GL_TEXTURE_MAG_FILTER, filter); if (target != GL_TEXTURE_RECTANGLE_ARB) { _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, srcLevel); _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, srcLevel); } - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + _mesa_SamplerParameteri(sampler, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + _mesa_SamplerParameteri(sampler, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); /* Always do our blits with no sRGB decode or encode.*/ if (ctx-Extensions.EXT_texture_sRGB_decode) { - _mesa_TexParameteri(target, GL_TEXTURE_SRGB_DECODE_EXT, + _mesa_SamplerParameteri(sampler, GL_TEXTURE_SRGB_DECODE_EXT, GL_SKIP_DECODE_EXT); } if (ctx-Extensions.EXT_framebuffer_sRGB) { @@ -1452,21 +1453,17 @@ blitframebuffer_texture(struct gl_context *ctx, /* Restore texture object state, the texture binding will * be restored by _mesa_meta_end(). */ - _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, minFilterSave); - _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, magFilterSave); if (target != GL_TEXTURE_RECTANGLE_ARB) { _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, baseLevelSave); _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave); } - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, wrapSSave); - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, wrapTSave); -if (ctx-Extensions.EXT_texture_sRGB_decode) { - _mesa_TexParameteri(target, GL_TEXTURE_SRGB_DECODE_EXT, srgbSave); -} if (ctx-Extensions.EXT_framebuffer_sRGB fbo_srgb_save) { _mesa_set_enable(ctx,
Mesa (master): scons: Add support for Intel Compiler.
Module: Mesa Branch: master Commit: 8734584952ea257d53ce421959bd9706345f221f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8734584952ea257d53ce421959bd9706345f221f Author: Vinson Lee v...@freedesktop.org Date: Tue Jul 31 22:55:39 2012 -0700 scons: Add support for Intel Compiler. The patch makes the SCons build with Intel Compiler successful. Signed-off-by: Vinson Lee v...@freedesktop.org Reviewed-by: Brian Paul bri...@vmware.com --- scons/gallium.py |6 ++ src/gallium/winsys/svga/drm/SConscript |2 +- 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/scons/gallium.py b/scons/gallium.py index 458651b..f4776d8 100755 --- a/scons/gallium.py +++ b/scons/gallium.py @@ -141,6 +141,7 @@ def generate(env): env['msvc'] = env['CC'] == 'cl' env['suncc'] = env['platform'] == 'sunos' and os.path.basename(env['CC']) == 'cc' env['clang'] = env['CC'] == 'clang' +env['icc'] = 'icc' == os.path.basename(env['CC']) if env['msvc'] and env['toolchain'] == 'default' and env['machine'] == 'x86_64': # MSVC x64 support is broken in earlier versions of scons @@ -154,6 +155,7 @@ def generate(env): gcc = env['gcc'] msvc = env['msvc'] suncc = env['suncc'] +icc = env['icc'] # Determine whether we are cross compiling; in particular, whether we need # to compile code generators with a different compiler as the target code. @@ -382,6 +384,10 @@ def generate(env): cflags += [ '-Wdeclaration-after-statement', ] +if icc: +cflags += [ +'-std=gnu99', +] if msvc: # See also: # - http://msdn.microsoft.com/en-us/library/19z1t1wy.aspx diff --git a/src/gallium/winsys/svga/drm/SConscript b/src/gallium/winsys/svga/drm/SConscript index 2d511d2..fea9df3 100644 --- a/src/gallium/winsys/svga/drm/SConscript +++ b/src/gallium/winsys/svga/drm/SConscript @@ -4,7 +4,7 @@ env = env.Clone() env.PkgUseModules('DRM') -if env['gcc'] or env['clang']: +if env['gcc'] or env['clang'] or env['icc']: env.Append(CCFLAGS = ['-fvisibility=hidden']) env.Append(CPPDEFINES = [ 'HAVE_STDINT_H', ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit