summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2015-12-31 00:33:07 -0300
committerJuan Linietsky <reduzio@gmail.com>2015-12-31 00:33:07 -0300
commit335c52ba03ecbccd0c9af8f9278b69da09a3e931 (patch)
tree5e4f5e2ea0d735228de7733e2fb689abbc2bc9c9 /drivers
parentfd836cad270f7eb9645356cd583c8f11bf737b0f (diff)
parentac13c8c0c6fc346462b21ee00139dddd2e4ec1e3 (diff)
Merge branch 'master' of https://github.com/godotengine/godot
Diffstat (limited to 'drivers')
-rw-r--r--drivers/chibi/cp_loader_mod.cpp9
-rw-r--r--drivers/chibi/cp_loader_s3m.cpp20
-rw-r--r--drivers/chibi/cp_loader_xm.cpp16
-rw-r--r--drivers/gles2/shader_gles2.cpp4
-rw-r--r--drivers/png/SCsub9
-rw-r--r--drivers/unix/thread_posix.cpp7
-rw-r--r--drivers/webp/utils/bit_reader.c8
-rw-r--r--drivers/webp/utils/bit_reader.h8
8 files changed, 60 insertions, 21 deletions
diff --git a/drivers/chibi/cp_loader_mod.cpp b/drivers/chibi/cp_loader_mod.cpp
index 98174ff9b1..6340a6f5ea 100644
--- a/drivers/chibi/cp_loader_mod.cpp
+++ b/drivers/chibi/cp_loader_mod.cpp
@@ -446,18 +446,19 @@ CPLoader::Error CPLoader_MOD::load_song(const char *p_file,CPSong *p_song,bool p
if (sid.is_null()) {
continue; //empty sample, not stored?
}
-
+ sm->lock_data(sid);
+ uint8_t *dataptr = (uint8_t*)sm->get_data(sid);
+
int len=sm->get_size(sid);
for (int s=0;s<len;s++) {
uint8_t d=file->get_byte();
//d-=128; //convert to signed
int8_t*ds=(int8_t*)&d;
- int16_t d16=*ds;
- d16<<=8;
- sm->set_data( sid, s, d16 );
+ dataptr[s]=*ds;
}
+ sm->unlock_data(sid);
}
file->close();
diff --git a/drivers/chibi/cp_loader_s3m.cpp b/drivers/chibi/cp_loader_s3m.cpp
index c21f7bdd38..073f35791c 100644
--- a/drivers/chibi/cp_loader_s3m.cpp
+++ b/drivers/chibi/cp_loader_s3m.cpp
@@ -196,8 +196,12 @@ CPLoader::Error CPLoader_S3M::load_sample(CPSample *p_sample) {
if (id.is_null())
return FILE_OUT_OF_MEMORY;
+
+ sm->lock_data(id);
+ void *dataptr = sm->get_data(id);
- for (int c=0;c<(data_is_stereo?2:1);c++) {
+ int chans = (data_is_stereo?2:1);
+ for (int c=0;c<chans;c++) {
for (int i=0;i<sample_size;i++) {
if (data_is_16bits) {
@@ -206,7 +210,7 @@ CPLoader::Error CPLoader_S3M::load_sample(CPSample *p_sample) {
s-=32768; //toggle sign
int16_t *v=(int16_t*)&s;
- sm->set_data(id,i,*v,c);
+ ((int16_t*)dataptr)[i*chans+c]=*v;
} else {
@@ -214,16 +218,16 @@ CPLoader::Error CPLoader_S3M::load_sample(CPSample *p_sample) {
uint8_t s=file->get_byte();
s-=128; //toggle sign
v=(int8_t*)&s;
- int16_t v16=*v;
- v16<<=8;
- sm->set_data(id,i,v16,c);
-
+ ((int8_t*)dataptr)[i*chans+c]=*v;
+
}
-
-
+
}
}
+
+ sm->unlock_data(id);
+
sm->set_loop_begin( id, loop_begin );
sm->set_loop_end( id, loop_end );
diff --git a/drivers/chibi/cp_loader_xm.cpp b/drivers/chibi/cp_loader_xm.cpp
index 8bde6b673e..66f36954ce 100644
--- a/drivers/chibi/cp_loader_xm.cpp
+++ b/drivers/chibi/cp_loader_xm.cpp
@@ -627,6 +627,10 @@ CPLoader::Error CPLoader_XM::load_instrument_internal(CPInstrument *p_instr,bool
CPSample *sample=song->get_sample(sample_index[j]);
CPSample_ID sid=sample->get_sample_data();
+ sm->lock_data(sid);
+
+ void*dataptr=sm->get_data(sid);
+
if (sm->is_16bits( sid)) {
int16_t old=0;
@@ -638,8 +642,9 @@ CPLoader::Error CPLoader_XM::load_instrument_internal(CPInstrument *p_instr,bool
int16_t sampleval=file->get_word();
newsample=sampleval+old;
old=newsample;
-
- sm->set_data( sid, k, newsample );
+
+ ((int16_t*)dataptr)[k]=newsample;
+ //sm->set_data( sid, k, newsample );
}
} else {
@@ -653,10 +658,15 @@ CPLoader::Error CPLoader_XM::load_instrument_internal(CPInstrument *p_instr,bool
newsample=sampleval+old;
old=newsample;
- sm->set_data( sid, k, (int16_t)newsample << 8 );
+ ((int8_t*)dataptr)[k]=newsample;
+
+ //sm->set_data( sid, k, (int16_t)newsample << 8 );
}
}
+
+ sm->unlock_data(sid);
+
}
for (int j=0;j<96;j++) {
diff --git a/drivers/gles2/shader_gles2.cpp b/drivers/gles2/shader_gles2.cpp
index e94930fffb..201b1262b5 100644
--- a/drivers/gles2/shader_gles2.cpp
+++ b/drivers/gles2/shader_gles2.cpp
@@ -739,12 +739,12 @@ void ShaderGLES2::set_custom_shader(uint32_t p_code_id) {
void ShaderGLES2::free_custom_shader(uint32_t p_code_id) {
- if (! custom_code_map.has( p_code_id )) {
+ /* if (! custom_code_map.has( p_code_id )) {
print_line("no code id "+itos(p_code_id));
} else {
print_line("freed code id "+itos(p_code_id));
- }
+ }*/
ERR_FAIL_COND(! custom_code_map.has( p_code_id ));
if (conditional_version.code_version==p_code_id)
diff --git a/drivers/png/SCsub b/drivers/png/SCsub
index 5682a5667e..5532e28ade 100644
--- a/drivers/png/SCsub
+++ b/drivers/png/SCsub
@@ -22,18 +22,19 @@ png_sources = [
"png/image_loader_png.cpp"
]
-if ("neon_enabled" in env and env["neon_enabled"]):
+if ("neon_enabled" in env and env["neon_enabled"]):
+ env.Append(CPPFLAGS=["-DPNG_ARM_NEON_OPT=2"])
env_neon = env.Clone();
if "S_compiler" in env:
env_neon['CC'] = env['S_compiler']
- env_neon.Append(CPPFLAGS=["-DPNG_ARM_NEON"])
+ #env_neon.Append(CPPFLAGS=["-DPNG_ARM_NEON"])
import os
# Currently .ASM filter_neon.S does not compile on NT.
if (os.name!="nt"):
- env_neon.Append(CPPFLAGS=["-DPNG_ARM_NEON_OPT=2"])
png_sources.append(env_neon.Object("#drivers/png/arm/arm_init.c"))
png_sources.append(env_neon.Object("#drivers/png/arm/filter_neon.S"))
-
+else:
+ env.Append(CPPFLAGS=["-DPNG_ARM_NEON_OPT=0"])
env.drivers_sources+=png_sources
diff --git a/drivers/unix/thread_posix.cpp b/drivers/unix/thread_posix.cpp
index b7bcd44783..1c18ebd855 100644
--- a/drivers/unix/thread_posix.cpp
+++ b/drivers/unix/thread_posix.cpp
@@ -81,6 +81,11 @@ Error ThreadPosix::set_name(const String& p_name) {
ERR_FAIL_COND_V(pthread == 0, ERR_UNCONFIGURED);
+ #ifdef PTHREAD_NO_RENAME
+ return ERR_UNAVAILABLE;
+
+ #else
+
#ifdef PTHREAD_RENAME_SELF
// check if thread is the same as caller
@@ -100,6 +105,8 @@ Error ThreadPosix::set_name(const String& p_name) {
#endif
return err == 0 ? OK : ERR_INVALID_PARAMETER;
+
+ #endif // PTHREAD_NO_RENAME
};
void ThreadPosix::make_default() {
diff --git a/drivers/webp/utils/bit_reader.c b/drivers/webp/utils/bit_reader.c
index 5081d5cd4d..4d6b4f0164 100644
--- a/drivers/webp/utils/bit_reader.c
+++ b/drivers/webp/utils/bit_reader.c
@@ -17,6 +17,8 @@
#include "./bit_reader_inl.h"
+#define JAVASCRIPT_ENABLED // testing
+
//------------------------------------------------------------------------------
// VP8BitReader
@@ -40,7 +42,13 @@ void VP8InitBitReader(VP8BitReader* const br,
br->bits_ = -8; // to load the very first 8bits
br->eof_ = 0;
VP8BitReaderSetBuffer(br, start, size);
+
+#ifdef JAVASCRIPT_ENABLED // html5 required aligned reads
+ while(((uintptr_t)br->buf_ & 1) != 0 && !br->eof_)
+ VP8LoadFinalBytes(br);
+#else
VP8LoadNewBytes(br);
+#endif
}
void VP8RemapBitReader(VP8BitReader* const br, ptrdiff_t offset) {
diff --git a/drivers/webp/utils/bit_reader.h b/drivers/webp/utils/bit_reader.h
index 7e09653ebc..f0f450231d 100644
--- a/drivers/webp/utils/bit_reader.h
+++ b/drivers/webp/utils/bit_reader.h
@@ -37,6 +37,12 @@ extern "C" {
// BITS can be any multiple of 8 from 8 to 56 (inclusive).
// Pick values that fit natural register size.
+#ifdef JAVASCRIPT_ENABLED
+
+#define BITS 16
+
+#else
+
#if defined(__i386__) || defined(_M_IX86) // x86 32bit
#define BITS 24
#elif defined(__x86_64__) || defined(_M_X64) // x86 64bit
@@ -49,6 +55,8 @@ extern "C" {
#define BITS 24 // TODO(skal): test aarch64 and find the proper BITS value.
#endif
+#endif
+
//------------------------------------------------------------------------------
// Derived types and constants:
// bit_t = natural register type for storing 'value_' (which is BITS+8 bits)